c# - Linq 搜索原理和子集合用 OR 语句
问题描述
我有一个父实体,它有一个ICollection
子实体。我想使用OR
. 因此,如果parentEntity.Name
OR 中的任何一个childrentEntity.PropertyValue
包含searchTerm
,则返回父实体。
我假设这SelectMany
会使孩子们变得平坦,并让我可以轻松地搜索他们。我也尝试“链接”我的查询,但是过滤掉了结果并且效果不佳 - 我需要 OR 表达式。
我的查询看起来像这样
var result = from v in parentEntity
where v.Name.Contains(searchTerm)
|| v.ChildCollection.SelectMany(x =>
x.PropertyValue.Contains(searchTerm))
select v;
解决方案
我认为您正在寻找Any
扩展方法:
var result = from v in parentEntity
where v.Name.Contains(searchTerm)
|| v.ChildCollection.Any(x =>
x.PropertyValue.Contains(searchTerm))
select v;
推荐阅读
- gitk - 是否可以将 Gitk 作为一个提交来显示 2 个修订之间的差异?
- google-apps-script - 运行 onEdit(e) 以针对特定工作表范围触发时出错
- docker - qemu:Docker 构建时不支持的系统调用
- html - 使用加性变换对兄弟元素进行样式化
- c - 孩子没有得到系统调用信号
- javascript - 检查窗口调整大小时所有元素的大小是否相同
- sql-server - For Each 循环容器中各种文件的行数
- jquery - 将活动类设置为猫头鹰轮播中心项目
- c# - 如何在table html 5 razor中显示spread Type参数和子参数
- flutter - 是否可以从图像中获取图像 GPS 位置坐标?