【问题标题】:C# list questionC# 列表问题
【发布时间】:2011-08-03 03:09:18
【问题描述】:

进行以下操作的好方法是什么:

List<IEnumerable<T>> listOfEnumerables = Get...();

List<T> listOfObjects = new List<T>();

// I want 'listOfObjects' to contain every element from every enumerable
// in 'listOfEnumerables'.

有什么漂亮的方法可以代替以下方法:

foreach (var enumerable in listOfEnumerables)
{
    listOfObjects.AddRange(enumerable);
}

谢谢。

【问题讨论】:

  • 这很大程度上取决于你对美的定义。

标签: c# list merge ienumerable


【解决方案1】:

您可以使用 LINQ:

List<T> listOfObjects = listOfEnumerables.SelectMany(s => s).ToList();

【讨论】:

  • 虽然 LINQ 的美妙之处 - 这不一定更有效(可能会,但可能不会),而且对我来说肯定更难阅读。
  • 我觉得这里唯一不好看的是身份功能。为什么框架中某处没有Fun.Id? :(
  • 当您知道 SelectMany 的作用时,阅读起来并不难。不过,如果存在无参数的 SelectMany 会更“漂亮”。
【解决方案2】:
listOfEnumerables.ForEach(i => listOfObjects.AddRange(i));

【讨论】:

  • ... 或只是.ForEeach(listOfObjects.AddRange)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多