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. ...
随机推荐
- 在C 中加载TorchScript模型
本教程已更新为可与PyTorch 1.2一起使用 顾名思义,PyTorch的主要接口是Python编程语言.尽管Python是合适于许多需要动态性和易于迭代的场景,并且是首选的语言,但同样的,在 许多 ...
- GitHub也会断供:美国制裁地区帐号都受限,毫无预警,个人页面直接404
请注意,GitHub也有断供危机. 如果你有GitHub私有库,是时候重新思考安全性,也是时候制定备份策略. 这不是杞人忧天,也不只温馨提示,而是已经发生的事实. 一位伊朗程序员,一觉醒来GitHub ...
- 解决GPU显存未释放问题
前言 今早我想用多块GPU测试模型,于是就用了PyTorch里的torch.nn.parallel.DistributedDataParallel来支持用多块GPU的同时使用(下面简称其为Dist). ...
- Dome_iptest_server
一个简单的ip测试服务器 打印返回 请求头request import socket def send_data(conn, data=None, status=200): if status != ...
- 使用Dism命令对Win7镜像进行操作
在操作前,我们需要下载Win7部署工具AIK和Win7原版镜像 ★镜像迅雷链接 ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408 ...
- PHP常用设计模式,PHP常用设计模式详解,PHP详解设计模式,PHP设计模式
PHP常用设计模式详解 单例模式: php交流群:159789818 特性:单例类只能有一个实例 类内__construct构造函数私有化,防止new实例 类内__clone私有化,防止复制对象 设置 ...
- JMeter 接口测试 自动生成签名机制
在进行接口测试时,遇到接口进行了签名校验,为实现自动生成签名,经过一点研究终于成功. 首先,需要从前端获取 签名加密包 XXXsign.jar.. 建议将该jar包放在 jmeter lib 目录 ...
- django禁用csrf
django禁用csrf 函数试图 from django.views.decorators.csrf import csrf_exempt @csrf_exempt def your_func_vi ...
- jvm入门及理解(二)——类加载器子系统
一.类加载子系统的作用 类加载子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识: ClassLoader只负责class文件的加载,至于它是否可以运行,则由E ...
- python3(六) for while
# Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来 names = ['Michael', 'Bob', 'Tracy'] for name in ...