相关疑难解决方法(0)

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

我有一个很长的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();
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

无法转换 'System.Linq.Expressions.Expression<System.Func<project.Contracts.DTOs.Note,bool>>[]' to 'System.Func<project.Contracts.DTOs.Note,bool>'

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

c# linq predicate where

8
推荐指数
3
解决办法
5773
查看次数

LinqKit PredicateBuilder返回所有或非行

我开始使用LinqKitPredicateBuilder来创建具有OR条件的谓词,这是Linq表达式无法实现的.

我面临的问题是,如果我开始PredicateBuilder.True<MyEntity>()返回所有行,如果我开始PredicateBuilder.False<MyEntity>()返回非行,除了我使用的表达式!看下面的代码:

        var pre = PredicateBuilder.True<MyEntity>();
        pre.And(m => m.IsActive == true);

        using (var db = new TestEntities())
        {
            var list = db.MyEntity.AsExpandable().Where(pre).ToList();
            dataGridView1.DataSource = list;
        }
Run Code Online (Sandbox Code Playgroud)

它应该返回具有IsActive == true的行,但它返回所有行!

我已经尝试了所有可能的组合PredicateBuilder.True | PredicateBuilder.FalseAnd| Or方法,不是它们的作品!

c# entity-framework predicatebuilder linqkit

6
推荐指数
1
解决办法
3663
查看次数