[英]LINQ: List of tuples to tuple of lists
使用單個LINQ調用是不可能的,但是您可以使用代碼輕松完成:
Tuple<List<A>, List<B>> Unpack<A, B>(List<Tuple<A, B>> list)
{
var listA = new List<A>(list.Count);
var listB = new List<B>(list.Count);
foreach (var t in list)
{
listA.Add(t.Item1);
listB.Add(t.Item2);
}
return Tuple.Create(listA, listB);
}
您可以使用Aggregate :
Tuple<List<A>, List<B>> Unpack<A, B>(List<Tuple<A, B>> list)
{
return list.Aggregate(Tuple.Create(new List<A>(list.Count), new List<B>(list.Count)),
(unpacked, tuple) =>
{
unpacked.Item1.Add(tuple.Item1);
unpacked.Item2.Add(tuple.Item2);
return unpacked;
});
}
Tuple<List<A>, List<B>> Unpack<A, B>(List<Tuple<A, B>> list) {
return Tuple.Create(list.Select(e => e.Item1).ToList(),list.Select(e => e.Item2).ToList());
}
public Tuple<List<int>,List<int>> Convert(List<Tuple<int, int>> BaseList)
{
return new Tuple<List<int>,List<int>>((from tuple in BaseList
select tuple.Item1).ToList(),
(from tuple in BaseList
select tuple.Item2).ToList());
}
我認為它是一個整數列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.