2016-04-19 39 views
-7

我必须处理以下问题:在结果为“通过”的情况下过滤列表中的所有学生。但是当我编写如下图所示的代码时,它总会像这样谨慎地返回错误:不能将类型'string'隐式转换为'bool'。虽然我使用Convert.ToBoolean(t.Result),但它不能工作?将类型'字符串'隐式转换为'bool'

帮帮我!

enter image description here

enter image description here

+2

请添加代码作为文本,而不是图片。你也在说'.Where(t => t.Result)'。但是你没有指定*你想要它做什么。哪里的结果等于*什么*?在这种情况下,您可能需要'.Where(t => t.Result ==“Pass”)' – Rob

+0

而不是将它作为图像附加,请问您可以在问题中编写代码。 – Hendry

+0

我低估了这个问题,因为你应该总是提供代码和错误消息作为文本,而不是图像(否则你的问题的元素不能被搜索)。编辑你的问题。添加代码,然后我可以删除我的DV。 – spender

回答

3

过滤所有学生在结果列表中的“通行证”,你需要添加的条件:

lst.Where(t => t.Result=="Pass").ToList(); 

你可以做一个同样的布尔属性,而不是此字符串,因此属性定义将如下所示:

public bool Result 
{ 
    get { return Score > 25; }   
} 

所以对于过滤所有学生在结果列表中的迭代条件是“通行证” (Score > 25)

lst.Where(t => t.Result).ToList(); 
+0

其实你可以说'return Score> 25;' –

+0

@HariPrasad:绝对是的;谢谢我已经更新了答案 –

+0

谢谢!这非常有帮助 – thceh

4

“真”与“假”是可以转换使用Convert.ToBoolean

为布尔值的唯一字符串

某些选项:

  • 更改方法返回truefalse以布尔而不是字符串
  • 更改您的方法以返回字符串“True”或“False”,并致电Convert.ToString
  • 编写一个包装方法,将“通过”和“失败”转换为truefalse
  • 更改条件.Where(t => t.Result == "Pass")
+0

'Convert.ToBoolean'不区分大小写,所以它也可以接受“true”和“false”。 – spender

+0

谢谢!这非常有帮助。谢谢 – thceh

相关问题