二、LinQ使用方法
来源:互联网 发布:游戏编程的软件 编辑:程序博客网 时间:2024/06/05 07:22
一、首先我们看看LinQ应用架构。
LinQ定义的大约40个查询的操作符,如常见的Select、from、in、where以及Orderby等。LINQ 提供了一条更常规的途径即给.Net Framework添加一些可以应用于所有信息源( all sources of information )的具有多种用途( general-purpose )的语法查询特性( query facilities ),这是比向开发语言和运行时( runtime )添加一些关系数据( relational )特性或者类似 XML 特性( XML-specific )更好的方式。这些语法特性就叫做 .NET Language Integrated Query (LINQ) 。
语法实例:
1、假设我们需要从一个集合中查询数据用一般 简单粗暴的方法可以这么写
var rets = new List<MartialArtsMaster>(); foreach (var temp in master) { if (temp.Level > 8) { rets.Add(temp); } } foreach (var ret in rets) Console.WriteLine(ret);
2、如果我们使用常见的LinQ的表达式写法可以简化代码繁杂项,增加了代码的可阅读性如:
var rets = from m in master where m.Level > 8 && m.Menpai == "这里是限制条件" select m;
3、扩展方法的写法,在方法中加入限制条件,通过返回值来限定LinQ,如:
var rets = master.Where(test);//过滤方法 static bool test(MartialArtsMaster master) { if (master.Level > 8) return true; return false; }
扩展方法可以用Lambda简化,如:
var rets = master.Where(m => m.Level > 8 ).OrderBy(x => x.Level).ThenBy(x=>x.Age);
二、LinQ联合查询。
联合查询通俗理解就是联合在一起查询,但是查询什么?怎么查询?联合的必要条件是什么?
既然是联合,那肯定是需要两个集合,或者数据源了,在这里我就统一用Lambda的表达式和扩展方法来写(因为简单粗暴)
假设我们有两个集合,一个是角色信息的集合,其中包括ID、Name、所学功夫等,另一个集合就是功夫信息集合,其中包含ID,Name、Power。下面我们写第一个表达式的LinQ联合查询:
var rets = from m in master from k in kongfu where m.Kongfu == k.Name && k.Power > 90 select m;//select new {master = m,kongfu = k};
这里查找了两个集合一个是master一个是kongfu的集合,限制条件是 master(大侠)的功夫等于kongfu中名字(可以看需要指定),且杀伤力大于90的大侠,select m 然后返回目标数据,如何需要返回两个目标数据,则我们需要加上new关键字和 { “这里指定返回目标数据” }。下面我们看看扩展方法的写法:
var rets = master.SelectMany(m => kongfu, (m, k) => new {master = m, kongfu = k}).Where(x=>x.master.Kongfu == x.kongfu.Name && x.kongfu.Power > 90);
SelectMany:投影操作符(C#中的方法,具体资料请Google)
我先把一些关键字放上来,免得不理解
Join on 的联合用法:
var rets = from m in master join k in kongfu on m.Kongfu equals k.Name where k.Power > 90 select new {master = m ,kongfu = k};把konogfu的集合加入到master中查询。
into groups 分组查询:
var rets = from k in kongfu join m in master on k.Name equals m.Kongfu into groups orderby groups.Count() select new {kongfu = k,count=groups.Count()};
把相同的属性放入一个组中,然后在这个组中查找数据
自身字段,一个集合的时候分组查询
var rets = from m in master group m by m.Kongfu into g orderby g.Count() select new {count = g.Count(), g.Key};
单个集合的时候使用,把拥有相同属性(功夫)的大侠放入一个组中查找
量词操作 any all
bool rets = master.Any(x => x.Menpai == "丐帮");Console.WriteLine(rets);bool rets = master.All(m => m.Menpai == "丐帮");Console.WriteLine(rets);any 判断集合中是否含有、包含指定条件(有一个)
all判断集合中是否含有、包含指定条件(所有)
- 二、LinQ使用方法
- Linq使用方法
- Linq 的使用方法
- linq 查询和使用方法
- linq学习笔记(二)
- LINQ查询入门(二)
- LINQ 学习(二)
- LINQ 基础(二)
- linq中文教程(二)
- 一步一步学Linq(二)
- linq实例(二)
- LINQ简介(二)
- Linq To Object(二)
- LINQ语法二
- C#Linq语法二
- LINQ体验(二)LINQ to XML
- LINQ(二)基本 LINQ 查询操作
- LINQ学习心得二)LINQ语法详解
- UC/OS的46个系统函数2
- 设置页面过时时间及重定向 点叉关闭或alt+F4时
- 开发规范:前端代码命名语义化推荐实践
- html怎么引用字体包
- mySql 为查询的结果集增加一个序号字段
- 二、LinQ使用方法
- ScrollView嵌套ListView
- java处理word公式(wmf格式转换成svg)
- 括号匹配
- maven使用手册
- The Complete Stream Zoo (Java流家族)
- netty 能做什么
- 使用C#开发HTTP服务器系列之Hello World
- Android Studio打包全攻略----从入门到精通