2013-11-14 44 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。