C# Lambda表达式中的多个Where子句
我有一个简单的lambda表达式,如下所示:C# Lambda表达式中的多个Where子句,c#,.net,lambda,C#,.net,Lambda,我有一个简单的lambda表达式,如下所示: x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty) 现在,如果我想在表达式中再添加一个where子句,比如,l.InternalName!=String.Empty那么表达式是什么?可以是 x => x.Lists.Include(l => l.Title) .Where(l => l.Title != String.E
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty)
现在,如果我想在表达式中再添加一个where子句,比如,l.InternalName!=String.Empty
那么表达式是什么?可以是
x => x.Lists.Include(l => l.Title)
.Where(l => l.Title != String.Empty && l.InternalName != String.Empty)
或
当您查看其中的实现时,您可以看到它接受函数(T,bool)
;这意味着:
T
是您的IEnumerable类型
bool
表示它需要返回一个布尔值
所以,当你这么做的时候
.Where(l => l.InternalName != String.Empty)
// ^ ^---------- boolean part
// |------------------------------ "T" part
或
也许吧
?
您也可以将其放在同一where子句中:
x=> x.Lists.Include(l => l.Title)
.Where(l => l.Title != string.Empty && l.InternalName != string.Empty)
您可以使用&&运算符将其包含在同一where语句中
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty
&& l.InternalName != String.Empty)
您可以使用任何比较运算符(就像执行if语句一样),例如
List<Int32> nums = new List<int>();
nums.Add(3);
nums.Add(10);
nums.Add(5);
var results = nums.Where(x => x == 3 || x == 10);
List nums=new List();
增加(3);
增加(10);
增加(5);
var结果=nums,其中(x=>x==3 | | x==10);
…将返回3和10。传递到的lambda,其中可以包括任何正常的C代码,例如&
运算符:
.Where(l => l.Title != string.Empty && l.InternalName != string.Empty)
这有点离题,但string类有一个方法string.IsNullOrEmpty,您可以使用它,而不是将其与string.Empty进行比较
x=> x.Lists.Include(l => l.Title)
.Where(l => l.Title != string.Empty && l.InternalName != string.Empty)
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty
&& l.InternalName != String.Empty)
List<Int32> nums = new List<int>();
nums.Add(3);
nums.Add(10);
nums.Add(5);
var results = nums.Where(x => x == 3 || x == 10);
.Where(l => l.Title != string.Empty && l.InternalName != string.Empty)