2011-09-26 100 views

回答

5

LINQ不是修改現有的集合 - 它是關於運行查詢。如果您需要更改的地方的列表,你可能想是這樣的:

HashSet<string> ids = new HashSet<string>(list2.Select(x => x.Id)); 
list1.RemoveAll(x => !ids.Contains(x.Name)); 

在「正常」的LINQ,你可以用做:

// I'm assuming no duplicate IDs in list2 
var query = (from x in list1 
      join y in list2 on x.Name equals y.Id 
      select x).ToList(); 
0

您還可以使用拉姆達:

var query = (list1.Join(list2, x => x.Name, y => y.Id, (x, y) => x)).ToList(); 

var query = (Enumerable.Join(list1, list2, x => x.Name, y => y.Id, (x, y) => x)).ToList(); 
相關問題