C# 在没有linq的情况下重写以下逻辑

C# 在没有linq的情况下重写以下逻辑,c#,linq,C#,Linq,有人能帮我做以下事情吗?这是一个面试问题 Rewrite this to not use LINQ or Lambda. // pseudo code for reference class Person { int Age; List<Person> Children; } List<Person> items; // linq / lambda example var total = items.SelectMany(i => i.Children).Sum

有人能帮我做以下事情吗?这是一个面试问题

Rewrite this to not use LINQ or Lambda.
// pseudo code for reference
class Person { int Age; List<Person> Children; }

List<Person> items;

// linq / lambda example
var total = items.SelectMany(i => i.Children).Sum(i => i.Age);
重写此命令以不使用LINQ或Lambda。
//供参考的伪代码
类人物{int Age;列出子类;}
清单项目;
//linq/lambda示例
var total=items.SelectMany(i=>i.Children.Sum)(i=>i.Age);
让我们把它分解一下

  • 通常,集合上的任何LINQ操作都可以替换为
    foreach
    循环

    // items
    foreach (var item in items)
    {
        // ...
    }
    
  • SelectMany()
    对应于所选项目上的内部
    foreach

    // items
    foreach (var item in items)
    {
        // .SelectMany(i => i.Children)
        foreach (var child in item.Children)
        {
            // ...
        }
    }
    
  • 最后一个操作是您的结果。您正在获取子项的
    Age
    Sum()

    int sum = 0;
    // items
    foreach (var item in items)
    {
        // .SelectMany(i => i.Children)
        foreach (var child in item.Children)
        {
            // .Sum(i => i.Age)
            sum += child.Age;
        }
    }
    // result is in sum
    

  • 你做了什么努力?你试过编译你发布的代码吗?我意识到这是一个面试问题,不需要有意义,但是你将如何处理一组人的孩子的年龄总和?谢谢杰夫·梅尔卡多,你逐步解释的方式非常清楚。