如何将语句从(LINQ到对象)标准转换为Lambda表达式

本文关键字:标准 转换 表达式 Lambda 对象 语句 LINQ | 更新日期: 2023-09-27 18:04:49

我是Linq的新手。只是想知道如何将这个标准表示为Lambda表达式?

        var query = from person in personList
                    from toy in person.Toys
                    from animal in person.Animal
                    where animal.Name == "Cat"
                    select new
                    {
                        person.Id,
                        toy
                    };

我已经试过了:

var newlist = personList.Select(p => new { id = p.Id, toys = p.Toys });

但是我不知道把where子句放在哪里。由于

如何将语句从(LINQ到对象)标准转换为Lambda表达式

大致相当于:

query = personList.SelectMany(p => p.Animal.Where(a => a.Name == "Cat")
                  .SelectMany(a => p.Toys.Select(t => new
                  {
                      p.Id,
                      toy = t
                  })));

如果你有LinqPad,你可以点击λ选项卡,查看你的语句的等效lambda语法

之类的personList.Where(p => p.Animal.Any(a => a.Name == "Cat")).SelectMany(p => p.Toys, (p1,t) => new { p1.Id, t})