• C#之LINQ查询


    LINQ查询

    LINQ查询的语句

                            from in//集合查询

                            join in on //集合联合查询

                            orderby//将查询到的对象按条件从小到大排序

                            orderby    条件   descending  //将查询到的对象按条件从大到小排序

                            where  查询的判断条件

                            select 返回查询后的值

                            group 分组        into 分组的队象    //对查询的结果分组                      groups   by  属性  into    // 用对象自身的属性分组

                           equals 判断二者是否相等

                           any all 量词操作符   集合.any(条件语句)只要集合中有一个对象符合条件,就返回true ,都不满足则返回false

                                                            集合.all(条件语句) 集合中所有对象都满足条件才返回true 否则返回false

    集合查询

     var res = from m in master// from in 将集合master中的对象一个一个放入m
                          where m.Level > 8//where 判断语句后面加判断条件
                          select m;//返回符合条件的master对象
                foreach (var item in res)//将查询到的对象的名字打印出来
                {
                    Console.WriteLine(item.Name);
                }
                Console.ReadKey();

    集合查询的扩展方法

      var res = master.Where(test);//将master集合中的对象一个一个传入test方法内,接收到true就把对象存入res集合中
    
            public static bool test(Person p)//扩展方法,将集合中的对象传入扩展方法
            {
                if(p.Level>8)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }

    集合联合查询

    第一种方法 利用两个from in 将两个集合中的对象取出判断

     //LINQ语句查询
                var res = from m in master// from in 将集合master中的对象一个一个放入m
                          from k in kongfu//from in 将集合kongfu中的对象一个一个放入k
                          where m.Level > 8&&k.Lethality>10//where 判断语句后面加判断条件
                          select m;//返回符合条件的master对象
                foreach (var item in res)//将查询到的对象的名字打印出来
                {
                    Console.WriteLine(item.Name);
                }
                Console.ReadKey();

    第二种方法利用 join  k in List on    联合条件

                          var res = from m in master// from in 将集合master中的对象一个一个放入m
                          join k in kongfu on m.Kongfu equals k.Name//join k in kongfu将类中的对象一个一个拿出放在K中,on 后面加判断语句
                          where m.Level > 8&&k.Lethality>10//where 判断语句后面加判断条件
                          select m;//返回符合条件的master对象

     equals 是判断是否相等的

    对查询结果排序

    orderby//将查询到的对象按条件从小到大排序

                          var res = from m in master//from in 将集合master中的对象一个一个放入m
                          where m.Age > 30//选择年龄大于30的对象
                          orderby m.Age//把选择出的对象按年龄排序,默认从大到小排序
                          select m;//将排好的对象放入res集合中
                          var res = from m in master//from in 将集合master中的对象一个一个放入m
                          where m.Age > 30//选择年龄大于30的对象
                          orderby m.Age,m.Level//把选择出的对象按年龄排序年龄相等按等级排序,默认从大到小排序
                          select m;//将排好的对象放入res集合中

    扩展方法

     var res1 = master.Where(m => m.Level > 8).OrderBy(m => m.Age);//OrderBy()将m对象按age从大到小排序
     var res2 = master.Where(m => m.Level > 9).OrderBy(m => m.Age).ThenBy(m => m.Level);//OrderBy()将m对象按age从大到小排序,age相同的对象用ThenBy()按level排序

      orderby    条件   descending  //将查询到的对象按条件从大到小排序

                          var res = from m in master//from in 将集合master中的对象一个一个放入m
                          where m.Age > 30//选择年龄大于30的对象
                          orderby m.Age descending //把选择出的对象按年龄排序,descending 让对象从大到小排序
                          select m;//将排好的对象放入res集合中

    对查询结构分组

    对联合查询结果排序

                          var res = from m in kongfu
                          join k in master on m.Name equals k.Kongfu   //联合查询       
                          into groups//into 对查询结果分组,分组后把数据存储在groups队象中
                          orderby groups.Count()//按每组队象的个数排序
                          select new { name = m.Name, count = groups.Count() };//直接用new{}一个新的对象,name是对象的属性,count也是新对象的属性,用res集合存储这个新对象

    按对象的某个属性分组

                          var res = from m in master//集合master查询
                          group m by m.Menpai into groups//从m对象中按menpai属性分组,分组的数据放在groups中
                          select new {manpai=groups.Key,count=groups.Count() };//新生成对象,对象有manpai和count属性,groups.key是分组的条件属性,groups.count是每一组的数量

    select new{   }//返回新生成的对象,放入集合中

    量词操作符

     bool istrue = master.Any(m => m.Level <0);
                bool istrue1 = master.All(m=>m.Level>5);
                Console.WriteLine(istrue);
                Console.WriteLine(istrue1);

    any 和all只能使用lanmbda表达式

  • 相关阅读:
    Redis
    Redis
    运维
    Redis
    Redis
    Redis
    Redis
    Redis
    Redis
    Spring
  • 原文地址:https://www.cnblogs.com/zhangyang4674/p/11408482.html
Copyright © 2020-2023  润新知