在LINQ中返回错误的值.Any()

时间:2018-05-30 10:32:24

标签: c# .net linq

我有一个返回Class对象List的方法。 获取列表后,我想检查是否存在特定条目 以下是我的查询

var myList = GetMethod()
if(myList != null && myList.Select(x => x.Id=='MyId').Any())
{
 // Do work
}  

如果mylist不为null,那么即使匹配的条目不存在,myList.Select(x => x.Id=='MyId').Any()也总是返回true。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

这是因为您需要Where而不是Select

if(myList != null && myList.Where(x => x.Id=='MyId').Any())

现在Select最终会有一些布尔值......有些是真的,有些是假的。

你可以简单地说:

if(myList != null && myList.Any(x => x.Id=='MyId'))

答案 1 :(得分:1)

选择返回IEnumerable布尔值,无论条件是否为真。因此,只要列表中有项目,Any()始终返回true。

只需使用:

    myList?.Any(x => x.Id == "MyId") == true;

请注意,我不喜欢== true之类的布尔比较,但这是针对?.预先进行的空检查。