Как преобразовать этот оператор из критериев (LINQ To Object) в лямбда-выражение? - PullRequest
2 голосов
/ 05 августа 2011

Я совсем новичок в Linq. Просто интересно, как я могу выразить этот критерий в лямбда-выражении?

        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. Спасибо

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Это примерно эквивалентно:

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

Если у вас есть LinqPad , вы можете нажать на вкладку λ и увидеть эквивалентный лямбда-синтаксис для ваших операторов.

0 голосов
/ 05 августа 2011

что-то вроде personList.Where(p => p.Animal.Any(a => a.Name == "Cat")).SelectMany(p => p.Toys, (p1,t) => new { p1.Id, t})

...