测试Linq查询是否返回值

本文关键字:返回值 是否 查询 Linq 测试 | 更新日期: 2023-09-27 18:24:48

我有一个小问题。我有一个返回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()而不是==

测试Linq查询是否返回值

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

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

检查:

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()进行比较。

试试这个:

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