簡體   English   中英

成員對兩個列表的交集

[英]Intersection of two lists by a member

我有一個這樣的對象:

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的對象列入另一個列表。 我怎樣才能做到這一點? 謝謝。

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());

您可以通過Join來做到這一點

var result = list1.Join(list2, l1 => l1.ID, l2 => l2.ID, 
    (lhs,rhs) => new {ID = lhs.ID, Name1 = lhs.Name, Name2 = rhs.Name};
);

實時示例: http//rextester.com/OAJRG62251

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM