我有两个这样的类(class)。一个有另一个类的列表,并通过 key1 链接。
public class Alpha
{
public key1 { get; set; }
public List<Bravo> { //getter and setter }
}
public class Bravo
{
public key1 { get; set; }
public someProp { get; set; }
}
我有一种方法可以获取两个 Alpha 和 Bravo 列表,我需要将它们加入到一个 Alpha 列表中。每个 Alpha 与 Bravo 都有一对多的关系,但现在我有很多 Alpha。我知道我可以遍历两个列表,但是有更快的方法吗?
public List<Alpha> Join (List<Alpha> alphaList, List<Bravo> bravoList)
{
//match each Bravo with it's corresponding Alpha
}
示例:
alphaList = {
item1 { key1 = 1, bravoList { } }
item2 { key1 = 2, bravoList { } }
item3 { key1 = 3, bravoList { } }
}
bravoList = {
itemA { key1 = 1, someProp }
itemB { key1 = 2, someProp }
itemC { key1 = 2, someProp }
itemD { key1 = 3, someProp }
itemE { key1 = 3, someProp }
}
finalList = {
item1 { key1 = 1, bravoList { itemA } }
item2 { key1 = 2, bravoList { itemB, itemC } }
item3 { key1 = 3, bravoList { itemD, itemE } }
}
最佳答案
您可以使用Enumerable.Join
:
public List<Alpha> Join(List<Alpha> alphaList, List<Bravo> bravoList)
{
return alphaList.Join(bravoList, a => a.key1, b => b.key1, (a,b) => a)
.ToList();
}
这将返回所有 Alpha
的列表,其中 key1
也在 Bravos
列表中。
更新:
public List<Alpha> Join(List<Alpha> alphaList, List<Bravo> bravoList)
{
List<Alpha> finalList = alphaList
.Select(a => new Alpha {
key1 = a.key1,
bravoList = bravoList.Where(b => b.key1 == a.key1).ToList()
}).ToList();
return finalList;
}
关于c# - 连接具有一对多关系的两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15799681/