我一直在使用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"
的所有水果
答案 0 :(得分:3)
您似乎想要OR
运算符,它是两个管道:||
。这将返回最后一个与第一个表达式匹配的所有项目,或者返回第二个表达式。
var applesAndOranges = listOfFruits.Where(x => x.name == "Apple" || x.name == "Orange").ToList();