【问题标题】:Linq unwrap a nested foreachLinq 展开嵌套的 foreach
【发布时间】:2011-03-21 19:39:21
【问题描述】:

如何将以下嵌套的 foreach 循环转换为 Linq 表达式?

谢谢

        List<Plan> plans = new List<Plan>();

        foreach (var planning in plannings)
        {
            foreach (var plan in planning)
            {
                plans.Add(plan);
            }                
        }

如果可能的话,我希望看到它使用 lambda 表达式 (.Select()) 而不是 from .. select 语法来完成

【问题讨论】:

    标签: c# linq


    【解决方案1】:
    var plans = plannings.SelectMany(p => p);
    

    【讨论】:

    • 你应该在最后添加 .ToList() 来实现枚举器
    【解决方案2】:
    List<Plan> plans = plannings.SelectMany(ps => ps).ToList();
    

    【讨论】:

      【解决方案3】:

      为了完整起见,这里是查询语法版本:

      var query = from planning in plannings
                  from plan in planning
                  select plan;
      
      List<Plan> plans = query.ToList();
      

      【讨论】:

        【解决方案4】:
                List<Plan> plans = new List<Plan>();
        
                foreach (var plan in plans.SelectMany(planning => planning))
                {
                    newPlans.Add(plan as Plan);
                }
        

        ..可能有用!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 2011-06-07
          • 1970-01-01
          • 2011-04-06
          • 1970-01-01
          • 1970-01-01
          • 2017-02-19
          相关资源
          最近更新 更多