c#提供的ling查询极大的遍历了集合的查询过程,且使用简单方便,非常的有用。

下面将分别用简单的例子说明:ling基本查询、延迟查询属性、类型筛选、复合from字句、多级排序、分组查询、联合查询、合并、分页、聚合操作符、并行linq、取消长时间运行的并行ling查询。

Lambda表达式简介:

 /*Lambda表达式:Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数
             表达式位于 => 运算符右侧的 lambda 表达式称为“表达式 lambda”。
             * (input parameters) => expression 
             * 示例:*/
              delegate int del(int i);  
              static void Main(string[] args)
              { 
                   del myDelegate = x => x * x;  
                   int j = myDelegate(5); //最后j = 25  
               } 
            

 

  • 基本查询

语句:

 var query = from r in listStudents where r.score < 60 orderby r.score descending select r;
 //var q2 = listStudents.Where(r => r.score < 60).OrderByDescending(r => r.score).Select(r => r) ;//或使用Lambda表达式

例子:

 /// <summary>
        /// 学生结构体
        /// </summary>
        struct Student
        {
            /// <summary>
            /// 姓名
            /// </summary>
            public string name;
            /// <summary>
            /// 年龄
            /// </summary>
            public int age;
            /// <summary>
            /// 班号
            /// </summary>
            public int grade;
            /// <summary>
            /// 分数
            /// </summary>
            public float score;
        }
/// <summary>
        /// linq
        /// 基本查询
        /// </summary>
        static void Linq1()
        {
            #region 构造查询数据
            List<Student> listStudents = new List<Student>();
            Random pRandom = new Random();
            for (int i = 1; i < 50; i++)
            {
                float sc = pRandom.Next(0, 100);
                int age = pRandom.Next(8, 13);
                int gde = pRandom.Next(1, 6);

                string name = "";
                switch (pRandom.Next(0, 6))
                {
                    case 1: name = "周xxx"; break;
                    case 2: name = "李xxx"; break;
                    case 3: name = "孙xxx"; break;
                    case 4: name = "钱xxx"; break;
                    default: name = "赵xxx"; break;
                }

                Student psdt = new Student();
                psdt.name = name;
                psdt.age = age;
                psdt.grade = gde;
                psdt.score = sc;
                listStudents.Add(psdt);
            }
            #endregion
            //从50个学生中选择出不及格的人员名单并按分数降序排列
            var query = from r in listStudents where r.score < 60 orderby r.score descending select r;
            //var q2 = listStudents.Where(r => r.score < 60).OrderByDescending(r => r.score).Select(r => r) ;//或使用Lambda表达式
            //orderby升序即从小到大,orderby r.score descending降序即从大到小

            Console.WriteLine("不及格的人员名单:");
            foreach (Student st in query)
            {
                Console.WriteLine("***************");
                Console.WriteLine("姓名:"+st.name);
                Console.WriteLine("班级:"+st.grade);
                Console.WriteLine("年龄:"+st.age);
                Console.WriteLine("分数:"+st.score);
            }
            Console.ReadKey();
        }
View Code

相关文章: