LINQ查询表达式---------where子句
LINQ查询表达式---------where子句
where 子句用在查询表达式中,用于指定将在查询表达式中返回数据源中的哪些元素。 它将一个布尔条件(“谓词”)应用于每个源元素(由范围变量引用),并返回满足指定条件的元素。 一个查询表达式可以包含多个 where 子句,一个子句可以包含多个谓词子表达式。
1.1 常见的where子句查询
static void Main(string[] args) { int[] numbers = { 9, 7, 5, 8, 3, 4, 6, 2, 1, 0 }; var num1 = from n in numbers where n > 5 select n; foreach (var i in num1) { Console.Write(i + " "); } Console.Write("\n"); Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); var num2 = from n in numbers where n > 5 where n % 2 == 0 select n; foreach (var i in num2) { Console.Write(i + " "); } Console.Write("\n"); Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); var num3 = from n in numbers where n > 5 && n < 9 select n; foreach (var i in num3) { Console.Write(i + " "); } Console.Write("\n"); Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); var num4 = from n in numbers where (n == 10 || n < 9) && (n != 7) select n; foreach (var i in num4) { Console.Write(i + " "); } Console.ReadLine(); }
输出结果: 9 7 8 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7 8 6 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5 8 3 4 6 2 1 0
1.2 在where子句中用自定义函数
static void Main(string[] args) { int[] numbers = { 9, 7, 5, 8, 3, 4, 6, 2, 1, 0 }; var num = from n in numbers where IsEva(n) select n; foreach (var i in num) { Console.Write(i + " "); } Console.ReadLine(); } public static bool IsEva(int i) { if (i % 2 == 0) return true; else return false; }
查询结果: 8 4 6 2 0
1.3 动态微词的筛选
static void Main(string[] args) { int[] numbers = { 9, 7, 5, 8, 3, 4, 6, 2, 1, 0 }; //定义动态的谓词数组,这个数组应该由实际运行环境生成 int[] number = { 7, 5, 3, 1, 0 }; //查询在给定谓词数组里不存在的数字 var num = from n in numbers where !number.Contains(n) select n; foreach (var i in num) { Console.Write(i + " "); } Console.ReadLine(); }
输出结果: 9 8 4 6 2