我有一个这样的对象:
public class myObject
{
public string Name {get; set;}
public string ID {get; set;}
}
我有两个这样的列表
List<myObject> list1 = new List<myObject>();
list1.Add(new myObject(){Name = Jason, ID = 1});
list1.Add(new myObject(){Name = Jonathan, ID = 2});
list1.Add(new myObject(){Name = Kevin, ID = 3});
List<myObject> list2 = new List<myObject>();
list2.Add(new myObject(){Name = Jennifer, ID = 5});
list2.Add(new myObject(){Name = Samantha, ID = 2});
list2.Add(new myObject(){Name = Lucy, ID = 9});
我希望通过ID
与这两个列表相交。我的意思是我想把Jonathan和Samantha的对象放在另一个列表中。我怎样才能做到这一点?感谢。
答案 0 :(得分:4)
以Join
为例
var query = from o1 in list1
join o2 in list2 on o1.ID equals o2.ID
select new { Object1 = o1, OBject2 = o2 };
我不知道您想要哪种列表,因为您的类只有一个属性ID
。
也许你想要一个Dictionary<int, List<myObject>>
,字典有公共ID作为键,一个列表将对象作为值:
Dictionary<int, List<myObject>> result = list1.Concat(list2)
.GroupBy(x => x.ID)
.ToDictionary(g => g.Key, g => g.ToList());
答案 1 :(得分:4)
您可以使用Join
var result = list1.Join(list2, l1 => l1.ID, l2 => l2.ID,
(lhs,rhs) => new {ID = lhs.ID, Name1 = lhs.Name, Name2 = rhs.Name};
);