我的声明是
ID == repository.Where(x => x.Value == "1" || x.Value == "2")
.Select( x => x.Id).FirstOrDefault();
这将导致2 ID
s,比如1和2,因此使用FirstOrDefault()
不正确,因为ID
可能等于不是第一个的另一个值。
使用linq
(最好不是foreach
循环)如何ID
等于来自linq
查询的任何结果?> p>
编辑 - 似乎没有人理解我的要求。因此,我将解释一下上面的内容,并说明为什么这会导致我的问题,然后我在下面标记的答案在关闭之前如何帮助我。
基本上,FirstOrDefault()将从where子句值之一返回 ONE 值。 (这是所期望的影响) - 但是,由于存在OR条件,它将带回 twos ID,这意味着外部条件(我所说的ID)有50/50的可能性== linq查询)可能是真的。
所以解决方案也删除了FirstOrDefault()
,因此请返回 ONE 值并将其替换为Any()
,这基本上意味着我的ID与任何返回的ID匹配从linq查询结果,然后外部条件为真。请看看我的答案。
答案 0 :(得分:3)
一旦你有序列:
repository
.Where(x => x.Value == "1" || x.Value == "2")
.Select( x => x.Id)
您可以对该序列使用.Any()
来确定其中的任何项目是否与给定条件匹配:
repository
.Where(x => x.Value == "1" || x.Value == "2")
.Select( x => x.Id)
.Any(x => x == ID)
答案 1 :(得分:2)
您可以使用Contains
方法
repository
.Where(x => x.Value == "1" || x.Value == "2")
.Select(x =>x.Id)
.Contains(ID)