LINQ,其中int等于许多结果

时间:2014-10-15 11:59:39

标签: c# linq

我的声明是

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查询结果,然后外部条件为真。请看看我的答案。


2 个答案:

答案 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)