-3

我有一个小问题。我有一个属性返回给我一个列表,我想对其进行 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()而不是==

4

3 回答 3

2

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

if (MyList.Where(item => item.Keys.SequenceEqual(myObject.Keys)).Any())
于 2013-07-25T11:53:23.863 回答
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)) {

}

您不能将 List 类型的不同对象的属性与==或进行比较Equals()

于 2013-07-25T11:37:19.307 回答
0

尝试这个:

if ((from item in MyList where myObject.Contains(item) select item).Any())
于 2013-07-25T11:40:57.443 回答