首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合和/或与PredicateBuilder?

结合和/或与PredicateBuilder?
EN

Stack Overflow用户
提问于 2013-05-30 22:43:41
回答 1查看 968关注 0票数 0

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

代码语言:javascript
复制
foreach(string id in Ids)
{
   predicate.And(x=> id.Contains(x.id)); //I want to do an And only on the first id.
}

这就是我以前做过的事情,但有没有更简洁的方法:

代码语言:javascript
复制
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++;
      }
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-30 22:52:10

这适用于PredicateBuilder的本地副本(工作中没有可用的entityFramework或LinkToSql ):

代码语言:javascript
复制
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)); 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16839169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档