C# Lambda表达式的Linq查询

C# Lambda表达式的Linq查询,c#,linq,lambda,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.Wherex=>x.Tags.Wherex=>x.Name.Containsc;但它不起作用。什么是正确的lambda,因此我不必使用y&z您需要一个SelectMany来翻译第二个from子句: var y = rs.Returns

我一直在尝试使用lambda来实现这一点:

var y = from r in rs.Returns from z in r.Tags where z.Name.Contains(c) select r;
我尝试了var r=rs.Returns.Wherex=>x.Tags.Wherex=>x.Name.Containsc;但它不起作用。什么是正确的lambda,因此我不必使用y&z

您需要一个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)));
您需要一个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)));