我有一个返回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。
有人可以帮助我吗?
答案 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
之类的布尔比较,但这是针对?.
预先进行的空检查。