我有点问题。我有一个属性,它返回一个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()
代替==
答案 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())