zoukankan      html  css  js  c++  java
  • C# LINQ查询之对象

    LINQ是一组查询技术的统称,其主要思想是将各种查询功能直接集成到C#语言中,可以对 对象、XML文档、SQL数据库、外部应用程序等进行操作。

    这里面讲的简单的几个子句,

    必须以from子句开头,以select或group子句结尾。

    例子:

    int []  nums={0,1,2,3,4,5};

    var  q  = from n in nums // 表示查询数据的通用类型。

    where  n%2==0

    select n;

    一般用foreach()来输出结果。

    foreach( var v in q){

    Console.WriteLine(v.name);

    }

    结果为:0 2 4

    --------------------------

    public class  Student{

    private string name;

    public string Name  

     {        get    {       return name;    }    

                set    {      name = value;    }  }    //可以在set里面写if语句 ,比如;set{if(name="chen") {name=null;}else{ name=value;}

    或者简写 public string name{get;set;}

    public int age{get;set;}          }

    ...

    List<Student> students =new List<Student>()

    {       new Student{name ="chen",age=24},

             new Student{name ="li",age=24},

            new Student{name ="zhang",age=23}   }

    var q = from t in students

    select  t;

    ---------------------------------

     where  子句

    var q = from t in students

    where t.name=='chen' && t.age=24

    select  t;

    ----------------------------------

    orderby  子句  用于排序

    var q = from t in students

    orderby t.age descending,t.name  ascending   //按照age 降序  name 升序排列。

    select  t;

    ---------------------------------------

    group  by子句 //用于分组

    var q = from t in students
    group t by t.age;

    foreach (var v in q)//必须使用嵌套的foreach循环
     { 

     Console.WriteLine(v.key);//输出按照要求排序的键值 age
     foreach (var v1 in v)
     {
     Console.WriteLine(”{0}{1}“,v1.姓名,v1.年龄);
    } }

    结果为:

        24

        chen

        li

        23

        zhang

    ---------------------------------------------

    select   子句

     var q = from t in students
     select new
     {
    姓名 = t.name,
     年龄 = t.age
    };
      foreach (var v in q)
    {

    Console.WriteLine(”{0}{1}“,v.姓名,v.年龄);

    }

    --------------------------------

    join    in   操作符

    需要定义另一个集合,比如:

     public class People
        {

            public string name { get; set; }

            public string sex { get; set; }
        }

    。。。。

      List<People> peoples = new List<People>()

      {       new People{name ="chen",sex="boy"},

               new People{name ="li",sex="girl"},

                new People{name ="zhang",sex="girl"}   };

              var q = from t in students

                   join c in peoples on t.name equals c.name 

                     select new { 姓名 = c.name, 年龄 = t.age, 性别 = c.sex };//将两个对象的数据联系在一起,name一样时候相对应。   

                    foreach (var v in q)
                    {
                        Console.WriteLine("{0}{1}{2}",v.姓名,v.年龄,v.性别);
                    }

     结果为:  chen  24  boy

                  li        24  girl

                  zhang 23  girl

    ---------------------------------------------------------------------------------

    into  关键字

    一般在 group里面用。

    var q = from t in students
    group t by t.age   into groupstu  //把之前的两个group ,into成一个变量

    where   groupstu.Count()>=2 // 对这个变量进行筛选,即 当groupstu里的成员大于或等于2时。

    select new { 姓名=t.name, 年龄=t.age}

     -------------------------------------------------------

    let 关键字 // 中间变量,存储一个子表达式过程的变量。

    比如: string[]    str={"abc  def"};

    var q= from v in str

    let word= v.Split(' ');

    from  vv in word

    let  upword=vv.ToUpper();//将字母大写

    select  upword;

    结果为:ABC

               DEF

            

  • 相关阅读:
    Android Studio 配置Gradle总结
    ion-icon
    Centos 7下利用crontab定时执行任务详解
    Centos7 下安装以及使用mssql
    Docker容器
    linux centos7--linux和window共享文件(samba)
    一些CMS网站系统漏洞,练手用(持续更新)
    相应的游戏服务器组件信息不存在,房间创建失败
    [Windows] php开发工具,zendstudio13使用方法补丁
    mysql sql语句大全
  • 原文地址:https://www.cnblogs.com/anyihen/p/5506946.html
Copyright © 2011-2022 走看看