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. 用卷积神经网络和自注意力机制实现QANet(问答网络)

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/ ,学习更多的机器学习.深度学习的知识! 在这篇文章中,我们将解决自然语言处理(具体是指问答)中最具挑战性 ...

  2. 树莓派3B+之Raspbian系统的安装

    概述 因为之前一段时间在研究物联网的原因,所以对树莓派这个东西早就有所耳闻.在我的印象里,树莓派几乎无所不能,它可以用来学编程. 搞物联网. 做服务器,甚至还能用它来进行渗透测试.终于,没禁的住诱惑, ...

  3. Redis在linux环境下的安装

    下载Redis安装包 wget http://download.redis.io/releases/redis-3.2.9.tar.gz 解压Redis安装包 tar -zxvf redis-3.2. ...

  4. iOS isEqual

    如何重写 hash 方法 一个合理的 hash 方法要尽量让 hash 表中的元素均匀分布,来保证较高的查询性能. 如果两个对象可以被视为同一个对象,那么他们的 hash 值要一样. mattt 在文 ...

  5. iOS 引用计数

    一.简介 OC 在创建对象时,不会直接返回该对象,而是返回一个指向对象的指针. OC 在内存管理上采用了引用计数,它是一个简单而有效管理对象生命周期的方式.在对象内部保存一个用来表示被引用次数的数字, ...

  6. Java中的集合类、Lambda、鲁棒性简述

    集合类 在java.util包中提供了一些集合类,常用的有List.Set和Map类,其中List类和Set类继承了Collection接口.这些集合类又称为容器,长度是可变的,数组用来存放基本数据类 ...

  7. 15.自动部署web工程

    用maven自动部署web工程 在pom.xml中写入以下: <build> <!--最终名称,进入网页时有http://localhost:8080/xxx/--> < ...

  8. c期末笔记(1)

    运算符 1.i++与++i的细微区别 i++与++i 和i++放在一个语句中,则i原本的值先被利用.语句结束后,i的值加一. i的原始值失效,直接加一. 2.int加法 整形数据(int)加上任何类型 ...

  9. docker win10 基本指令

    一.镜像操作 docker images 本地镜像 docker pull imagename 获取网上获取镜像 docker run 创建docker容器 docker rmi imagename ...

  10. json.dumps() 和 json.loads()

    转载: https://blog.csdn.net/qinglingls/article/details/96476368