LINQ is it possible to add where clauses dynamically

前端 未结 5 1375
青春惊慌失措
青春惊慌失措 2021-01-05 02:36

I want to search my db with different keys. According to the input, there may be 1 key to 10 keys. Is there a way to add OR/AND clauses to my Linq query dynamically?

5条回答
  •  一向
    一向 (楼主)
    2021-01-05 03:17

    For AND clauses it is simple:

    var feedList = from feed in ctx.Feed;
    foreach(var key in keys){
        feedList = feedList.Where(x=> content.contains(key));
    }
    var resultQuery = feedList.Select(x=> new {....});
    

    For OR you will need to use Expressions or try LinqKit and its predicates :

    var predicate = PredicateBuilder.False();
    foreach(var key in keys){
        predicate = predicate.Or(x=> content.contains(key));
    }
    var resultQuery = ctx.Feed.Where(predicate).Select(x=> new {....});
    

提交回复
热议问题