linq扩展方法:有没有办法在where方法中添加OR子句

时间:2010-01-10 22:51:53

标签: c# linq linq-to-objects

我有这样的声明:

foreach (var container in modelEntities.
   Where(me => me.Value.ModelEntityType == (int)EntityType.Container))

现在我想在这个where语句中添加一个or子句,但是我似乎无法做到这一点。

有办法吗?或者我必须做

var containers = (from me in modelEntities
   where me.Value.ModelEntityType == (int)EntityType.Container ||
   me.Value.ModelEntityType == (int)EntityType.SubForm
   select me);

foreach (var container in containers)

2 个答案:

答案 0 :(得分:3)

您只需将添加到第一个表单:

foreach (var container in modelEntities.
    Where(me => me.Value.ModelEntityType == (int)EntityType.Container ||
      me.Value.ModelEntityType == (int)EntityType.SubForm))

答案 1 :(得分:0)

将所有选项添加到列表并查询该列表。

var options = new [] {(int)EntityType.Container, (int)EntityType.SubForm};

var containers = modelEntities.Where(m => options.Contains(m.Value.ModelEntityType));