2012-04-26 131 views
1

我一直在试图使用lambda这个:LINQ查询到Lambda表达式

var y = from r in rs.Returns from z in r.Tags where z.Name.Contains(c) select r; 

我试图var r = rs.Returns.Where(x=>x.Tags.Where(x=>x.Name.Contains(c)));但它没有工作。什么是正确的拉姆达所以我没有用y & z

回答

7

你需要一个SelectMany“从”条款翻译第二:

var y = rs.Returns 
      .SelectMany(r => r.Tags, (r, z) => new { r, z }) 
      .Where(pair => pair.z.Name.Contains(c)) 
      .Select(pair => pair.r); 

这是一个非常直接的翻译。另一种方法是使用:

var y = rs.Returns.Where(r => r.Tags.Any(z => z.Name.Contains(c))); 
+0

工作非常感谢! – sprocket12 2012-04-26 19:12:58