首页 > 解决方案 > Linq 搜索原理和子集合用 OR 语句

问题描述

我有一个父实体,它有一个ICollection子实体。我想使用OR. 因此,如果parentEntity.NameOR 中的任何一个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;

标签: c#linqef-core-2.1

解决方案


我认为您正在寻找Any扩展方法:

var result = from v in parentEntity
             where v.Name.Contains(searchTerm)
             || v.ChildCollection.Any(x => 
                         x.PropertyValue.Contains(searchTerm))
             select v;

推荐阅读