where作为LINQ的条件关键字。
where的右面是表达式
表达式可以方法返回值,但是where的右面最终是一个可检测真假的表达式
代码:
static void Main(string[] args) { var NumArray = new[] {0,1,2,3,4,5,6,7,8,9 }; var list = from i in NumArray where IsMethod(i) group i by i<4 into iList from max in iList where max<2 select max; foreach (var item in list) { Console.Write($"{item}"); } Console.ReadKey(); } private static bool IsMethod(int i) { return i>0&&i<4; }
本代码中第一次表达式中使用了方法的返回值。
另外where可以出现多次,几乎是不限制位置。
但是除了select的后面或者group作为结尾的后面,因为他们的LINQ的结尾。也不能做为LINQ的起手。
比如:
var list = from i in NumArray where i>0 where i<5 group i by i<4 into iList from max in iList where max<2 select max;
一个复杂的条件拆分成简单的条件,虽然代码看起来很新手,但是易读性确实很高。