2013-11-14 46 views
0

我试图比较两个列表与LINQ,这两个列表是同一类的List<T>,但有不同的值。 像C#LINQ。所有不工作

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和等,但它并没有任何好处。 我如何得到。所有的工作?

+6

'from r in list1.All' is wrong。可能它应该只是'在list1'中。加入'.All'后面的想法是什么? – Jon

+0

@Jon我没有让LINQ从另一个线程得到它。删除.All工程,但我仍然没有收到任何输入,只是一个空的列表,即使这些值是正确的。 – HenrikP

回答

2

很可能你期望All是一个返回序列中所有项目的字段,但这是不正确的。 All()是一种确定序列的所有元素是否满足条件的方法。

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

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

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