标准查询运算符(SQO)

     标准查询运算符定义在 System.Linq.Enumerable 类的 50 多个为 IEnumerable<T> 准备的扩展方法,换句话说,IEnumerable<T> 上的每一个方法都是一个标准查询运算符,这些方法用来对操作的集合进行查询筛选。

        标准查询运算符提供了包括筛选、投影、聚合、排序等功能在内的查询功能。

 实例如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public static List<User> InitListData()
        {
            return new List<User>(){
                new User { Id = 1, Name = "凌霜残雪1", Age = 21 },
                new User { Id = 2, Name = "凌霜残雪2", Age = 22 },
                new User { Id = 3, Name = "凌霜残雪3", Age = 23 },
                new User { Id = 4, Name = "凌霜残雪4", Age = 24 },
                new User { Id = 5, Name = "凌霜残雪5", Age = 25 },
                new User { Id = 6, Name = "凌霜残雪6", Age = 26 },
                new User { Id = 7, Name = "凌霜残雪7", Age = 27 },
                new User { Id = 8, Name = "凌霜残雪8", Age = 28 },
                new User { Id = 9, Name = "凌霜残雪", Age = 29 },
                new User { Id = 10, Name = "凌霜残雪10", Age = 36 },
                new User { Id = 11, Name = "凌霜残雪11", Age = 33 }

            };
        }
        static void Main(string[] args)
        {
            var list = InitListData();
            //var result = list.Where(x => x.Age >= 30).ToList();
            //result.ForEach(r => Console.WriteLine(string.Format("{0},{1},{2}", r.Id, r.Name, r.Age)));

            var result = list.Where(x => x.Age >= 30).Select(s => s.Name).ToList();
            result.ForEach(x => Console.WriteLine(x));
            Console.ReadLine();
        }
    }

    class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

筛选集合 Where

       Where 方法为我们提供了一个集合的筛选功能,但需要一个带 bool 返回值的“筛选器”(匿名方法、委托、Lambda表达式均可),从而表明集合中某个元素是否应该被返回。

var list = InitListData();
var result = list.Where(x => x.Age >= 30).ToList();
result.Foreach(r=>Console.WriteLine(string.Format("{0},{1},{2}", r.Id, r.Name, r.Age)))
Console.ReadLine();

运行结果:


查询投射 Select:

返回对象集合 IEnumerable<T>Select()。返回年龄大于30 岁的人的名字代码如下:

 var result = list.Where(x => x.Age >= 30).Select(s => s.Name).ToList();
 result.ForEach(x => Console.WriteLine(x));

运行结果如下:

统计数量 int Count()

 int num = list.Where(x => x.Age >= 30).Count();

结果为 2.

多条件排序:OrderBy().ThenBy().ThenBy()

list.OrderBy(x=>x.Age).OrderBy(x=>x.Id)

集合连接 Join()

新建一个 Student 类,并初始化数据。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public static List<User> InitListData()
        {
            return new List<User>(){
                new User { Id = 1, Name = "凌霜残雪1", Age = 21 },
                new User { Id = 2, Name = "凌霜残雪2", Age = 22 },
                new User { Id = 3, Name = "凌霜残雪3", Age = 23 },
                new User { Id = 4, Name = "凌霜残雪4", Age = 24 },
                new User { Id = 5, Name = "凌霜残雪5", Age = 25 },
                new User { Id = 6, Name = "凌霜残雪6", Age = 26 },
                new User { Id = 7, Name = "凌霜残雪7", Age = 27 },
                new User { Id = 8, Name = "凌霜残雪8", Age = 28 },
                new User { Id = 9, Name = "凌霜残雪", Age = 29 },
                new User { Id = 10, Name = "凌霜残雪10", Age = 36 },
                new User { Id = 11, Name = "凌霜残雪11", Age = 33 }

            };
        }
        static void Main(string[] args)
        {
            List<Student> lstStu = new List<Student>(){
                new Student { Id = 1, userID = 1, ClassName = "一班" },
                new Student { Id = 2, userID = 2, ClassName =  "一班" },
                new Student { Id = 3, userID = 3, ClassName =  "一班" },
                new Student { Id = 4, userID = 4, ClassName =  "一班" },
                new Student { Id = 5, userID = 5, ClassName =  "一班" },
                new Student { Id = 6, userID = 6, ClassName =  "一班" },
                new Student { Id = 7, userID = 7, ClassName =  "一班" },
                new Student { Id = 8, userID = 8, ClassName =  "一班" },
                new Student { Id = 9, userID = 9, ClassName =  "一班" },
                new Student { Id = 10, userID = 10, ClassName =  "一班" },
                new Student { Id = 11, userID = 11, ClassName =  "一班" }

            };

            var list = InitListData();
            //var result = list.Where(x => x.Age >= 30).ToList();
            //result.ForEach(r => Console.WriteLine(string.Format("{0},{1},{2}", r.Id, r.Name, r.Age)));
            //var result = list.Where(x => x.Age >= 30).Select(s => s.Name).ToList();
            //result.ForEach(x => Console.WriteLine(x));
            int num = list.Where(x => x.Age >= 30).Count();

            var result1 = list.Join(lstStu, u => u.Id, p => p.userID, (u, p) => new { userID = u.Id, Name = u.Name, ClassName = p.ClassName });
            foreach (var item in result1)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine(num);
            Console.ReadLine();
        }
    }

    class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
    class Student
    {
        public int Id { get; set; }
        public int userID { get; set; }
        public string ClassName { get; set; }
    }
}

运行结果如下:


猜你喜欢

转载自blog.csdn.net/qq_21419015/article/details/80537252
今日推荐