【问题标题】:Simple LinQ question: convert [][] to []简单的 LinQ 问题:将 [][] 转换为 []
【发布时间】:2011-02-08 08:04:00
【问题描述】:

我想获取 Item 对象的集合或列表,但我现在得到了数组数组。

Item[][] s = employees.Select(e => e.Orders.Select(o => new Item(e.ID, o.ID)).ToArray()).ToArray();

任何人都可以选择我的解决方案吗?

附:只是 LinQ 解决方案:)

【问题讨论】:

    标签: c# linq arrays


    【解决方案1】:

    您需要使用SelectMany 来连接结果集。

    var items = employees.SelectMany(e => e.Orders.Select(o => new Item(e.ID, o.ID)));
    

    【讨论】:

      【解决方案2】:

      对于它的价值,这可以用 LINQ 语法写得更简洁明了:

      var s = from e in employees
              from o in e.Orders
              select new Item(e.ID, o.ID);
      

      【讨论】:

      • 虽然我同意这一点,但我不会更改使用的语法,而是认为Orders 应该引用回Employee,并且不需要Item。跨度>
      • +1。请注意,此语法实际上被翻译成 SelectMany。使用您认为更具可读性的任何内容。生成的代码一模一样。
      【解决方案3】:

      您要查找的扩展方法称为“SelectMany”:http://msdn.microsoft.com/en-en/library/system.linq.enumerable.selectmany.aspx

      【讨论】:

        【解决方案4】:

        看看Enumerables.SelectMany(),见this Stack Overflow question中的例子。

        【讨论】:

          猜你喜欢
          • 2019-03-07
          • 1970-01-01
          • 2011-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多