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.Where(x=>x.Tags.Where(x=>x.Name.Contains(c)));但没有成功。什么是正确的 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)));

关于c# - Linq 查询到 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10339617/

相关文章:

c# - 如何从带有 where 子句的列表中获取数据到另一个列表?

linq - 错误地创建了一个应用联接

c++ - 在折叠表达式中扩展参数包作为 lambda 捕获的一部分 - gcc 与 clang

lambda - 类文件在文件系统中的含义

c# - 将 GridView 导出到 XLS --- 分页问题

c# - 如何在运行时向 TypeDescriptor 添加属性级属性?

c# - 动态 LINQ - 无法在 GUID 和字符串之间转换

java - 如何使用 Java 流获取具有相同最大值的所有对象?

c# - 使用 Entity Framework 从用户输入中选择数据

c# - 在 .Net C# 中释放资源