私は持っていますがList<Tuple<A,B>>
、LINQに戻る方法があるかどうか知りたいですTuple<List<A>,List<B>>
これは、次のPythonの質問に似ています。リスト/ペアのタプルを2つのリスト/タプルに解凍します。
私は持っていますがList<Tuple<A,B>>
、LINQに戻る方法があるかどうか知りたいですTuple<List<A>,List<B>>
これは、次のPythonの質問に似ています。リスト/ペアのタプルを2つのリスト/タプルに解凍します。
単一の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());
}
整数のリストだと思いました