尝试在不进行foreach等的情况下计算出这个lambda查询。我目前有一个数据库表,其中包含一个逗号分隔的字符串列表。它基本上是一个过滤器(例如它可以是裤子,上衣,T恤,手套等)。在查询数据库的函数中,基本上有一个接受类似字符串的参数。
我不知道我现在是否已经太累了,不能解决问题但是会挣扎。我知道它将是Intersect,但无法弄清楚语法。
目前我有......
public static List<ItemListItem> GetItems(string filter = "")
{
var db = new dbConnection();
var results = (from i in db.Items
select i);
if (!string.IsNullOrEmpty (filter))
results = results.Where(x => x.Filters.Split(',').Intersect(filter.Split(',')) )
}
答案 0 :(得分:2)
Enumerable.Any
的末尾需要Intersect
,如:
x.Filters.Split(',').Intersect(filter.Split(',')).Any()
所以你的查询是:
results = results.Where(x => x.Filters.Split(',')
.Intersect(filter.Split(','))
.Any());
Enumerable.Where
需要返回bool
的表达式。 Intersect
会返回IEnumerable<T>
而Enumerable.Where
会拒绝接受。添加Enumerable.Any
意味着返回交叉点导致任何行的那些行。