gpt4 book ai didi

传递给 Linq Where 子句的 C# 谓词列表

转载 作者:太空狗 更新时间:2023-10-29 18:16:00 24 4
gpt4 key购买 nike

我有一个很长的 Linq Where我想用谓词列表填充的子句。

List<Expression<Func<Note, bool>>> filters = new List<Expression<Func<Note, bool>>>();

filters.Add(p => p.Title != null && p.Title.ToLower().Contains(searchString));
filters.Add(p => p.Notes != null && p.Notes.ToLower().Contains(searchString));
filters.Add(GlobalSearchUser((List < User > users = new List<User>() { p.user1, p.user2, p.user3, p.user4 }), searchString));

notes = dataAccess.GetList<Note>(pn => pn.ProjectVersionID == projectVersionID, filterExtensions.ToArray())
.Where(filters.ToArray()).Take(10).ToList();

但是我收到了这个错误:

cannot convert from 'System.Linq.Expressions.Expression<System.Func<project.Contracts.DTOs.Note,bool>>[]' to 'System.Func<project.Contracts.DTOs.Note,bool>'

这是 .where 子句的错误。拉出 .where 编译就好了。

最佳答案

我认为可以通过使用 AnyAll Linq 方法来简化和缩短 Hogan 的出色答案。

获取满足所有条件的项目:

var resultAll = listOfItems.Where(p => filters.All(f => f(p)));

并获取满足任何条件的项目:

var resultAny = listOfItems.Where(p => filters.Any(f => f(p)));

关于传递给 Linq Where 子句的 C# 谓词列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29954030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com