簡體   English   中英

LINQ:列表元組的元組列表

[英]LINQ: List of tuples to tuple of lists

我有一個List<Tuple<A,B>> ,想知道LINQ中是否有辦法返回Tuple<List<A>,List<B>>

這類似於以下Python問題: 將列表/元組對打包成兩個列表/元組

使用單個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.

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