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

  

 

posted @ 2017-03-01 16:51  涂山吕吕  阅读(1483)  评论(0编辑  收藏  举报