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. OpenCV-Python 特征匹配 + 单应性查找对象 | 四十五

    目标 在本章节中,我们将把calib3d模块中的特征匹配和findHomography混合在一起,以在复杂图像中找到已知对象. 基础 那么我们在上一环节上做了什么?我们使用了queryImage,找到 ...

  2. Jupyter Notebook自动补全

    大多数程序员都非常熟悉不同的自动补全工具.然而,我注意到许多数据科学家还没有使用它.如果你是他们中的一员,是时候开始使用这个提高效率的工具了 什么是自动补全? 它是你的编程环境提供的一种功能,用于完成 ...

  3. TensorFlow 卷积神经网络手写数字识别数据集介绍

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 手写数字识别 接下来将会以 MNIST 数据集为例,使用卷积层和池 ...

  4. 同源策略与JSONP劫持原理

    同源策略 浏览器中有两个安全机制,一个浏览器沙盒(Sandbox),另一个就是同源策略(Same Origin Policy,简称SOP) ,下面介绍同源策略.同源是指同协议.同域名.同端口,必须三同 ...

  5. Markdown 高阶语法

    记录一些 Markdown 的高阶语法,想起来什么,再更新 分割线 两条分割线 *** *** 插入表格 Column Column Column Row Content Content | Colu ...

  6. Spring-Cloud-Netflix-系统架构

    目录 系统架构 概述 集中式架构 概述 特点 垂直拆分 概述 特点 系统架构分类 微服务 微服务的特点: 分布式服务: 微服务和分布式的区别: 微服务要面临的问题: springClould是什么 远 ...

  7. k8s + docker + Jenkins使用Pipeline部署SpringBoot项目时Jenkins错误集锦

    背景 系统版本:CentOS7 Jenkins版本:2.222.1 maven版本:apache-maven-3.6.3 Java版本:jdk1.8.0_231 Git版本:1.8.3.1 docke ...

  8. 如何让Java应用成为杀不死的小强?(中篇)

    各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 上期我们抛了一个砖:“如何实现 Java 应用进程的状态监控,如果被监控的进程 down 掉,是否有机制能启动起来?” ...

  9. 并发——抽象队列同步器AQS的实现原理

    一.前言   这段时间在研究Java并发相关的内容,一段时间下来算是小有收获了.ReentrantLock是Java并发中的重要部分,所以也是我的首要研究对象,在学习它的过程中,我发现它是基于抽象队列 ...

  10. Integer类的进制之间转换的方法

    一.两个通用方法 1.public static String toString(int i,int radix) (1)作用 将十进制的数转化成指定进制数的字符串形式:radix参数指进制数: (2 ...