linq使用多个.where语句

时间:2015-12-06 03:33:49

标签: c# linq

我一直在使用linq一段时间,但我认为我并不像我想的那样理解它:

假设我有一份水果清单

class Fruit {
 string name {get; set;}
}
//listOfFruits has a random number of fruit objects in it
listOfFruits;

如果我想获得名称等于Apple的所有水果对象,我会这样做:

var apples = listOfFruits.Where(x => x.name == "Apple").ToList();

我的第一个问题是,如果我堆叠.Where语句,它们都会过滤主列表吗?或者第一个.Where是否获得了新的结​​果集,然后是针对新结果集的下一个.Where过滤器?

以下相同:

var applesAndOranges = listOfFruits
 .Where(x => x.name == "Apple")
 .Where(x => x.name == "Orange")
 .ToList();

var applesAndOranges = listOfFruits
 .Where(x => x.name == "Apple" && x.name == "Orange")
 .ToList();

如果这些都没有返回苹果和橙子的列表,我如何查询主要的fruitList以获取名称为"Apple""Orange"的所有水果

1 个答案:

答案 0 :(得分:3)

您似乎想要OR运算符,它是两个管道:||。这将返回最后一个与第一个表达式匹配的所有项目,或者返回第二个表达式。

var applesAndOranges = listOfFruits.Where(x => x.name == "Apple" || x.name == "Orange").ToList();