📜  C#3.0 查询表达式

📅  最后修改于: 2020-11-01 03:02:33             🧑  作者: Mango

C#查询表达式

C#查询表达式是使用LINQ查询语法编写的表达式。 LINQ(语言集成查询)是用于构造查询的语言。

C#查询表达式包含子句集,并使用类似于SQL的查询表达式。

查询表达式必须以from子句开头,并以select或group子句结尾。

要存储查询,我们必须使用IEnumerable类型变量。它提供了IEnumerator.MoveNext方法来迭代元素。

我们可以通过两种方式从IEnumerable序列中迭代元素。

  • IEnumerator.MoveNext方法
  • foreach循环

注意:我们必须使用System.Linq命名空间来执行查询表达式。

我们来看一个使用表达式查询显示数组中奇数的示例。

C#查询表达式示例1

using System;
using System.Linq;
using System.Collections.Generic;
namespace CSharpFeatures
{
    class DelegateInference
    {
        static void Main(string[] args)
        {           
            int[] IntVal = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            // Query Expression
            IEnumerable OddVal = 
                from val in IntVal 
                where (val % 2) != 0 
                select val;
            // Iterating fetched result
            foreach (int val in OddVal)
            {
                Console.WriteLine(val);
            }
        }
    }
}

输出量

1
3
5
7
9

C#查询表达式示例2

在此示例中,我们使用查询表达式从学生集合中获取学生姓名。

using System;
using System.Linq;
using System.Collections.Generic;
namespace CSharpFeatures
{
    class Student
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
        public static List GetStudents()
        {
            List student = new List();
            Student student1 = new Student { ID = 101, Name = "Irfan", Email = "irfan@gmail.com"};
            Student student2 = new Student { ID = 102, Name = "Rahul", Email = "rahul@abc.com" };
            Student student3 = new Student { ID = 103, Name = "John",  Email = "john@abc.com" };
            student.Add(student1);
            student.Add(student2);
            student.Add(student3);
            return student;
        }
    }
    class QueryExpressionExample
    {
        static void Main(string[] args)
        {
            IEnumerable queryName =
                from student in Student.GetStudents()
                where student.ID == 103
                select student.Name;
            foreach (var s in queryName)
                Console.Write(s);
        }
    }
}

它显示一个学生,学生号为103。

输出量

John