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
C# LINQ查询之对象的更多相关文章
- C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询
1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...
- 使用Linq 查询数据 构建对象 select new{}
linq 查询数据 /// <summary> /// 汽车品牌及车型 /// </summary> /// <returns></returns> p ...
- Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询
问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...
- LinqToDB 源码分析——轻谈Linq查询
LinqToDB框架最大的优势应该是实现了对Linq的支持.如果少了这一个功能相信他在使用上的快感会少了一个层次.本来笔者想要直接讲解LinqToDB框架是如何实现对Linq的支持.写到一半的时候却发 ...
- Linq查询基本操作
摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...
- C#基础:LINQ 查询函数整理
1.LINQ 函数 1.1.查询结果过滤 :where() Enumerable.Where() 是LINQ 中使用最多的函数,大多数都要针对集合对象进行过滤,因此Where()在LINQ 的操作 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (26) ------ 第五章 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7 在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ ...
- Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)
为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...
- Linq查询表达式
目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...
随机推荐
- 用卷积神经网络和自注意力机制实现QANet(问答网络)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/ ,学习更多的机器学习.深度学习的知识! 在这篇文章中,我们将解决自然语言处理(具体是指问答)中最具挑战性 ...
- 树莓派3B+之Raspbian系统的安装
概述 因为之前一段时间在研究物联网的原因,所以对树莓派这个东西早就有所耳闻.在我的印象里,树莓派几乎无所不能,它可以用来学编程. 搞物联网. 做服务器,甚至还能用它来进行渗透测试.终于,没禁的住诱惑, ...
- Redis在linux环境下的安装
下载Redis安装包 wget http://download.redis.io/releases/redis-3.2.9.tar.gz 解压Redis安装包 tar -zxvf redis-3.2. ...
- iOS isEqual
如何重写 hash 方法 一个合理的 hash 方法要尽量让 hash 表中的元素均匀分布,来保证较高的查询性能. 如果两个对象可以被视为同一个对象,那么他们的 hash 值要一样. mattt 在文 ...
- iOS 引用计数
一.简介 OC 在创建对象时,不会直接返回该对象,而是返回一个指向对象的指针. OC 在内存管理上采用了引用计数,它是一个简单而有效管理对象生命周期的方式.在对象内部保存一个用来表示被引用次数的数字, ...
- Java中的集合类、Lambda、鲁棒性简述
集合类 在java.util包中提供了一些集合类,常用的有List.Set和Map类,其中List类和Set类继承了Collection接口.这些集合类又称为容器,长度是可变的,数组用来存放基本数据类 ...
- 15.自动部署web工程
用maven自动部署web工程 在pom.xml中写入以下: <build> <!--最终名称,进入网页时有http://localhost:8080/xxx/--> < ...
- c期末笔记(1)
运算符 1.i++与++i的细微区别 i++与++i 和i++放在一个语句中,则i原本的值先被利用.语句结束后,i的值加一. i的原始值失效,直接加一. 2.int加法 整形数据(int)加上任何类型 ...
- docker win10 基本指令
一.镜像操作 docker images 本地镜像 docker pull imagename 获取网上获取镜像 docker run 创建docker容器 docker rmi imagename ...
- json.dumps() 和 json.loads()
转载: https://blog.csdn.net/qinglingls/article/details/96476368