Combine And/Or with PredicateBuilder?

本文关键字:PredicateBuilder with Or And Combine | 更新日期: 2023-09-27 18:16:19

我有一个Ids的列表,我只想在第一个上做AND,在后面的上做OR。在过去,我保留了一个counter变量,当counter为1时,我做And,但之后我做OR,但我很好奇是否有更简单的方法:

foreach(string id in Ids)
{
   predicate.And(x=> id.Contains(x.id)); //I want to do an And only on the first id.
}

这是我过去所做的,但有没有更简洁的方法:

int counter = 1;
foreach (var Id in Ids)
{
     string i = Id;
     if (counter == 1)
     {
         predicate = predicate.And(x => i.Contains(x.id));
         counter++;
      }
      else
      {
           predicate = predicate.Or(x=>i.Contains(x.id));
          counter++;
      }
   }

Combine And/Or with PredicateBuilder?

这与PredicateBuilder的本地副本一起工作(没有entityFramework或LinkToSql可用):

var firstID = ids.First();
predicate.And(x => firstID.Contains(x.id));
foreach (string id in ids.Skip(1))
{
    var localID = id;   //access to a modified closure otherwise
    predicate.Or(x => localID.Contains(x.id)); 
}
相关文章:
  • 没有找到相关文章