使用LINQ(C#)查找两个不同自定义列表中的所有项目

时间:2010-08-12 15:41:16

标签: c# linq

我有两个清单......

List<ObjectA> listA
List<ObjectB> listB

两者都有一个int属性ID,这是唯一的...

我想使用LINQ ...

从listA获取listA[x].ID = listB[x].ID的所有对象

由于

3 个答案:

答案 0 :(得分:3)

您需要使用.Join(...)功能。

在查询语法中,它看起来像这样:

var result = from a in listA
             join b in listB on a.ID equals b.ID
             select new { /* properties you want */ };

在标准C#语法中,它看起来像这样:

var result = listA.Join(listB, a => a.ID, b => b.ID, (a, b) => new { /* properties you want */ });

答案 1 :(得分:2)

这样做:

from a in ListA
   join b in ListB on a.ID equals b.ID
   select new { ListAItem = a, ListBItem = b };

这将生成一个匿名对象列表,每个对象包含ID匹配的ListA和ListB项目。

答案 2 :(得分:1)

var query = listA.Where((x, i) => x.ID == listB[i].ID);