0

我正在尝试将两个列表与 LINQ 进行比较,这两个列表都属于List<T>同一类,但其中的值不同。我尝试了各种方法,例如

var result = (from r in list1.All
             join r2 in list2 on r.id equals r2.AnotherId
             select r).ToList();

但是我得到了错误

'System.Linq.ParallelEnumerable.All<TSource>(System.Linq.ParallelQuery<TSource>, System.Func<TSource,bool>)' is a 'method', which is not valid in the given context

我试图将我的列表更改为 IEnumerable 等等,但它没有任何好处。我如何让 .All 工作?

4

2 回答 2

4

首先,.All 是一个方法,所以它需要括号。其次,你知道 .All() 是做什么的吗?它为您提供一个布尔值,是否列表的所有元素都遵循您提供给该方法的谓词。在这种情况下,您可能应该只删除 .All 。

于 2013-11-14T10:15:04.667 回答
2

您很可能希望All成为一个从序列中返回所有项目的字段,但事实并非如此。All()是一种确定序列的所有元素是否满足条件的方法。

要加入 2 个序列,您的代码应该很简单:

var result = (from r in list1
             join r2 in list2 on r.id equals r2.AnotherId
             select r).ToList();
于 2013-11-14T10:14:55.230 回答