Linq标准查询运算及用法
Linq中的查询运算符:
- Where, 获得只满足条件的元素
- Select,SelectMany, 针对一个(多个)查询对象,将查询的结果转换成需要的数据形式
- Take,TakeWhile, 获得序列中指定位置之前(Take包括此位置,TakeWhile不包括)的元素
- Skip,SkipWhile, 获得序列中指定位置之后(Skip不包括此位置,SkipWhile包括此位置)的元素
- OrderBy,OrderByDescending, 按升序(降序)方式对原有数据进行排序
- ThenBy,ThenByDescending, 按升序(降序)方式对原有数据进行次要排序
- Reverse, 将原有的数据颠倒排序
- GroupBy, 根据分组条件将数据放入不同的组中
- Distinct 去除数据中重复的值
- Union, 返回二个集合中内唯一的元素,即并集
- Intersect 返回同时出现在二个集合中的元素,即交集
- Except 返回一个集合中有另一个集合中没有的元素,即差集
- ToArray,ToList,ToDictionary, 将集合转换成数组,泛型列表,字典
- OfType 根据指定类型筛选IEnumerable的元素
- First,FirstOfDefault, 返回集合中第一个元素或满足条件的第一个元素(FirstOfDefault没有满足条件的返回默认的值)
- ElementAt,ElementAtOrDefault 返回集合中指定位置的元素(ElementAtOrDefault索引超出范围则返回默认值)
- Range, 生成有关数字的集合
- Repeat 生成一个相关重复值的集合
- Any, 判断序列中是否有元素满足条件
- All, 判断序列中是否所有元素都满足条件
- Contains 判断序列中是否包含指定元素
- Average,Count,Max,Min,Sum 对集合取平均值,计数,取最大值,最小值,总和
2 static void WhereData()
3 {
4 var db = new NorthwindDataContext();
5 var stockBase = from b in db.BaseData2s where b.ID > 10683 select new { b.ID, b.ChiName };
6 foreach (var item in stockBase)
7 {
8 Console.WriteLine(item);
9 }
10 Console.WriteLine();
11 string[] nums = { "fdfd", "fdfd", "32", "fsdffsf", "fdf", "fdf", "4324342", "fddffa" };
12 //过滤字符长度小于索引的值
13 var shortnum = nums.Where((num, index) => num.Length < index);
14 foreach (var item in shortnum)
15 {
16 Console.WriteLine(item);
17 }
18 }
19 //分区运算符Take,Skip,TakeWhile,SkipWhile
20 static void TakeData()
21 {
22 var db = new NorthwindDataContext();
23 var based = from b in db.BaseData2s select new { b.ID, b.EngName };
24 //得到前三个的值
25 var first3 = based.Take(3);
26 foreach (var item in first3)
27 {
28 Console.WriteLine("first3:{0}\t{1}", item.ID, item.EngName);
29 }
30 Console.WriteLine();
31 //得到第三位后面的值
32 var last = based.Skip(3);
33 foreach (var item in last)
34 {
35 Console.WriteLine("last:{0}\t{1}", item.ID, item.EngName);
36 }
37 Console.WriteLine();
38 int[] numbers = { 5, 4, 8, 9, 3, 0, 6, 7, 2, 33 };
39 //得到小于9前面的值
40 var firstLess6 = numbers.TakeWhile(n => n < 9);
41 //得到元素值是否不是3的倍数,是则返回当前位置后的元素(包括当前元素)
42 var butfirst2 = numbers.SkipWhile(n => n % 3 != 0);
43 foreach (var item in firstLess6)
44 {
45 Console.WriteLine("first6:{0}", item);
46 }
47 Console.WriteLine();
48 foreach (var item in butfirst2)
49 {
50 Console.WriteLine("2:{0}", item);
51 }
52 }
53
54 //使用集合运算符Union并集,Intersect交集,Except差集,Distinct移除重复值
55 static void Linq1()
56 {
57 int[] numbers = { 2, 2, 3, 51, 51, 5, 5 };
58 var distinctnumbers = numbers.Distinct();
59 foreach (var item in distinctnumbers)
60 {
61 Console.WriteLine("distince:{0}", item);
62 }
63 Console.WriteLine();
64
65 int[] numberA = { 0, 2, 4, 5, 6, 8, 9 };
66 int[] numberB = { 1, 3, 4, 5, 7, 8, 11 };
67 distinctnumbers = numberA.Union(numberB);
68
69 foreach (var item in distinctnumbers)
70 {
71 Console.WriteLine("Union:{0}", item);
72 }
73 Console.WriteLine();
74 var intersectnumber = numberA.Intersect(numberB);
75 foreach (var item in intersectnumber)
76 {
77 Console.WriteLine("Intersect:{0}", item);
78 }
79 Console.WriteLine();
80 var Exceptnumber = numberB.Except(numberA);
81 foreach (var item in Exceptnumber)
82 {
83 Console.WriteLine("Except:{0}", item);
84 }
85 Console.WriteLine();
86 }
87
88 //使用分组运算符
89 static void LinqGroupBy()
90 {
91 string[] words = { "blueberry", "chimpanzee", "abacus", "banana", "apple", "cheese" };
92 //以字符中的第一个字母分组
93 var wordGroups = from w in words group w by w[0] into g select new { FirstLetter = g.Key, Words = g };
94 foreach (var item in wordGroups)
95 {
96 Console.WriteLine("words that start with letter '{0}':", item.FirstLetter);
97 foreach (var w in item.Words)
98 {
99 Console.WriteLine(w);
100 }
101 }
102
103 var wordgroup2 = words.GroupBy(a => a[0]);
104 foreach (var item in wordgroup2)
105 {
106 Console.WriteLine("words that start with letter '{0}':", item.Key);
107 foreach (var w in item)
108 {
109 Console.WriteLine(w);
110 }
111 }
112 }
113
114 //元素运算符First,FirstOfDefault
115 static void LinqFirst()
116 {
117 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
118 var number = (from n in numbers where n >= 6 select n).First();
119 Console.WriteLine("First:{0}", number);
120 //查询第一个为2的倍数
121 int evenNum = numbers.First(n => n % 2 == 0);
122 Console.WriteLine();
123 Console.WriteLine(evenNum);
124
125 int[] numbers2 = { };
126 int firstDefault = numbers2.FirstOrDefault();
127 Console.WriteLine("firstDefault:{0}", firstDefault);
128 }
129
130 //限定运算符any,all,contains
131 static void LinqAny()
132 {
133 string[] words = { "blueberry", "chimpanzee", "abacus", "banana" };
134 //判断是否有字符包含'ba'元素
135 bool afterBa = words.Any(b => b.Contains("ba"));
136 Console.WriteLine(afterBa);
137
138 //判断是否所有字符都包含'ba'元素
139 bool afterAll = words.All(b => b.Contains("ba"));
140 Console.WriteLine(afterAll);
141
142 }
转载于:https://www.cnblogs.com/JeJeXu/archive/2011/05/16/2047847.html
Linq标准查询运算及用法相关推荐
- LINQ标准查询操作符
本文基于.NET Framework 2.0编写 本文PDF下载 推荐大家下载本文的PDF进行阅读,可以方便的使用书签来阅读各个方法,而且代码中的关键字是高亮显示的. 转载请注明出处. 一.投影操作符 ...
- LINQ标准查询操作符详解
一. 关于LINQ LINQ 英文全称是"Language-Integrated Query",中文为"语言集成查询",它是微软首席架构师.De ...
- LINQ:进阶 - LINQ 标准查询操作概述
"标准查询运算符"是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 I ...
- NHibernate3剖析:Query篇之NHibernate.Linq标准查询
本节内容 系列引入 NHibernate.Linq概述 标准查询运算符 结语 系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Sessi ...
- 一起谈.NET技术,NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询
系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Session策略篇.应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种 ...
- NHibernate3.0剖析:Query篇之NHibernate.Linq标准查询
系列引入 NHibernate3.0剖析系列分别从Configuration篇.Mapping篇.Query篇.Session策略篇.应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种 ...
- C# LINQ标准查询操作符
首先添加数据集合 1 [Serializable] 2 public class Racer : IComparable<Racer>, IFormattable 3 { 4 public ...
- mysql linq any查询_LINQ标准查询操作符详解(转)
一. 关于LINQ LINQ 英文全称是"Language-Integrated Query",中文为"语言集成查询",它是微软首席架构师.Delphi 之父和 ...
- LINQ 的标准查询操作符
摘自msdn (http://msdn.microsoft.com/zh-cn/magazine/cc337893.aspx) LINQ 的标准查询操作符 John Papa 代码下载位置: Data ...
最新文章
- go gin框架:请求静态图片资源(可用于搭建图床等应用)
- Lotto(DFS处理)
- 人工智能全产业链深度透析--(综合)
- 计算机参观企业心得,走进联想 感悟联想——北航MBA参观联想集团总部
- java多对多关系实例_【Java一对多关系实例公布,你的Java真的可以玩的这么好吗】- 环球网校...
- Windows域环境下的网络问题
- Java Netty (1)
- 稀疏编码: LASSO,近端梯度优化(PGD),迭代软阈值算法(ISTA),L-Lipschitz条件,软阈值
- mac 备份android 手机通讯录导入iphone,iphone如何导出通讯录(轻松教你iPhone备份通讯录的方法)...
- Kerberos的工作原理
- Adobe软件中PS、PR、AE、AI软件如何安装【附软件下载】
- android app 获得root 权限管理,Android获取超级管理员权限的实现
- Hot Sale Ray Ban Predator 2 Sunglasses, Cheap Ray Ban Jackie OhhⅡ
- Nexus5刷Firefox OS 2.0
- 订单漏单问题分析及解决方案
- python爬虫爬取的数据与浏览器获取的数据不一样 爬虫爬取到的数据一直不变
- 关于Web实现前后端分离,前后端解耦
- 服务器显示error1962,电脑出现error1962怎么解决
- 使用VLC media player搭建简单的流媒体服务器
- 【Xilinx DDS】Vivado代码实现FPGA DDS
热门文章
- LOJ-10096(强连通+bfs)
- “java程序打成jar包 如何处理第三方jar包”
- EonerCMS——做一个仿桌面系统的CMS(二)
- 如何在运行时确定对象类型(RTTI)
- Android App列表之游标ListView(索引ListView)
- 自动化设计模式Page Object
- [转]布隆过滤器详解
- C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态
- Modules(最小树形图)
- Haroopad安装与配置: Linux系统下最好用的Markdown编辑器