我有一个List<Tuple<A,B>>
并且想知道 LINQ 是否有办法返回Tuple<List<A>,List<B>>
这类似于以下 Python 问题:Unpacking a list / tuple of pairs into two lists / tuples
我有一个List<Tuple<A,B>>
并且想知道 LINQ 是否有办法返回Tuple<List<A>,List<B>>
这类似于以下 Python 问题:Unpacking a list / tuple of pairs into two lists / tuples
使用单个 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);
}
您可以使用聚合:
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());
}
我认为它是一个整数列表