2011-08-05 73 views
2

我對Linq很新。只是想知道我怎麼能表達這個標準lambda表達式?如何將此語句從(LINQ To Object)標準轉換爲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 
        }; 

我曾嘗試這樣的:

變種newlist = personList.Select(p值=>新{ID = p.Id,玩具= p.Toys});

但我不知道把where子句放在哪裏。由於

回答

1

這大致相當於:

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

如果你有LinqPad您可以在λ選項卡上單擊並查看您的語句相當於lambda語法。

+0

沒問題。 :-) –

0

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

相關問題