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. 在C 中加载TorchScript模型

    本教程已更新为可与PyTorch 1.2一起使用 顾名思义,PyTorch的主要接口是Python编程语言.尽管Python是合适于许多需要动态性和易于迭代的场景,并且是首选的语言,但同样的,在 许多 ...

  2. GitHub也会断供:美国制裁地区帐号都受限,毫无预警,个人页面直接404

    请注意,GitHub也有断供危机. 如果你有GitHub私有库,是时候重新思考安全性,也是时候制定备份策略. 这不是杞人忧天,也不只温馨提示,而是已经发生的事实. 一位伊朗程序员,一觉醒来GitHub ...

  3. 解决GPU显存未释放问题

    前言 今早我想用多块GPU测试模型,于是就用了PyTorch里的torch.nn.parallel.DistributedDataParallel来支持用多块GPU的同时使用(下面简称其为Dist). ...

  4. Dome_iptest_server

    一个简单的ip测试服务器 打印返回 请求头request import socket def send_data(conn, data=None, status=200): if status != ...

  5. 使用Dism命令对Win7镜像进行操作

    在操作前,我们需要下载Win7部署工具AIK和Win7原版镜像 ★镜像迅雷链接 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408 ...

  6. PHP常用设计模式,PHP常用设计模式详解,PHP详解设计模式,PHP设计模式

    PHP常用设计模式详解 单例模式: php交流群:159789818 特性:单例类只能有一个实例 类内__construct构造函数私有化,防止new实例 类内__clone私有化,防止复制对象 设置 ...

  7. JMeter 接口测试 自动生成签名机制

    在进行接口测试时,遇到接口进行了签名校验,为实现自动生成签名,经过一点研究终于成功. 首先,需要从前端获取 签名加密包  XXXsign.jar..  建议将该jar包放在 jmeter lib 目录 ...

  8. django禁用csrf

    django禁用csrf 函数试图 from django.views.decorators.csrf import csrf_exempt @csrf_exempt def your_func_vi ...

  9. jvm入门及理解(二)——类加载器子系统

    一.类加载子系统的作用 类加载子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识: ClassLoader只负责class文件的加载,至于它是否可以运行,则由E ...

  10. python3(六) for while

    # Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来 names = ['Michael', 'Bob', 'Tracy'] for name in ...