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

C# LINQ查询之对象的更多相关文章

  1. C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

    1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...

  2. 使用Linq 查询数据 构建对象 select new{}

    linq 查询数据 /// <summary> /// 汽车品牌及车型 /// </summary> /// <returns></returns> p ...

  3. Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询

    问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...

  4. LinqToDB 源码分析——轻谈Linq查询

    LinqToDB框架最大的优势应该是实现了对Linq的支持.如果少了这一个功能相信他在使用上的快感会少了一个层次.本来笔者想要直接讲解LinqToDB框架是如何实现对Linq的支持.写到一半的时候却发 ...

  5. Linq查询基本操作

    摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...

  6. C#基础:LINQ 查询函数整理

    1.LINQ 函数   1.1.查询结果过滤 :where() Enumerable.Where() 是LINQ 中使用最多的函数,大多数都要针对集合对象进行过滤,因此Where()在LINQ 的操作 ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7  在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ ...

  8. Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

    为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...

  9. Linq查询表达式

    目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...

随机推荐

  1. 字符串中的count()方法

    描述 Python count() 方法用于统计字符串里某个字符出现的次数.可选参数为在字符串搜索的开始与结束位置. 语法 count()方法语法: str.count(sub, start= 0,e ...

  2. gunicorn的作用

    gunicorn是什么: gunicorn是一种unix上被广泛使用的Python WSGI UNIX HTTP Server WSGI是什么: 先说下 WSGI 的表面意思,Web Server G ...

  3. Pytest系列(5) - 用例执行的几种状态

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 用例执行状态 用例执行完成后,每条 ...

  4. 第一个AWK程序的尝试

    为了统计API的访问,需要读取8个G的数据,所以学习了下文本处理神器,AWK.简单实例如下: # 以\t分割的文本 awk -F "\t" ' //获取小时的函数 function ...

  5. SpringBoot整合Springfox-Swagger2

    前言 不管Spring Boot整合还是SpringMVC整合Swagger都基本类似,重点就在于配置Swagger,它的精髓所在就在于配置. @ 目录 1.Swagger简介 2.整合前可能遇到的问 ...

  6. override 重写

    //override:子类继承父类,子类重写父类的方法 public class override { public static void main(String[] args) { horse h ...

  7. 【PHP】数组

    一.生活中的数组: a)    教室的座位:第一天来教室的时候,每个座位上都有自己的一个名字,我们可以通过这个名字快速定位到自己的座位在什么位置! b)    电影院的座位:我们买了电影票之后,能够通 ...

  8. python 爬虫之 urllib库

    文章更新于:2020-03-02 注:代码来自老师授课用样例. 一.初识 urllib 库 在 python2.x 版本,urllib 与urllib2 是两个库,在 python3.x 版本,二者合 ...

  9. 35 编码 ASCII Unicode UTF-8 ,字符串的编码、io流的编码

    * 编码表: * 信息在计算机上是用二进制表示的,这种表示法让人理解就很困难.为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表 *ASCII ...

  10. 小程序后台隐藏后 socket 无法重新连接

    小程序后台隐藏后 socket 无法重新连接 连接时 fail 回调函数的事件参数:connectSocket:fail:jsapi has no permission,event=createSoc ...