测试Linq查询是否返回值

时间:2013-07-25 11:27:04

标签: c# linq

我有点问题。我有一个属性,它返回一个List,我想对它进行linq查询,以测试我是否与另一个对象匹配。

我不太清楚,所以这是我的代码。

我是第一次尝试这个:

if ((from item in MyList where item.Keys == myObject.Keys select item).Any())
    //Some stuff

但没有结果。 那么我试试这个:

if (MyList.Where(item => item.Keys == myObject.Keys).Any())
    //Some stuff

没有结果......

我不明白问题出在哪里。 哦,是的,在对它提出疑问之前:是的我肯定会在我的列表和我的对象之间匹配;)

编辑:我也尝试使用.Equals()代替==

3 个答案:

答案 0 :(得分:2)

您需要使用SequenceEqual来比较枚举:

if (MyList.Where(item => item.Keys.SequenceEqual(myObject.Keys)).Any())

答案 1 :(得分:1)

检查:

if(MyList.Any(item => item.Keys.SequenceEqual(myObject.Keys))) {

}

if(MyList.Any(item => item.Keys.Length == myObject.Keys.Length 
           && item.Keys.Intersect(myObject.Keys).Count() == item.Keys.Length)) {

}

您无法将列表类型的不同对象的属性与==Equals()进行比较。

答案 2 :(得分:0)

试试这个:

if ((from item in MyList where myObject.Contains(item) select item).Any())