Linq查询Lambda表达式

时间:2012-04-26 18:53:29

标签: c# linq lambda

我一直在尝试使用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)));但它没有用。什么是正确的lambda所以我不必使用y& z

1 个答案:

答案 0 :(得分:7)

您需要SelectMany来翻译第二个“from”子句:

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)));