Linq标准查询运算及用法

Linq中的查询运算符:

  1. Where,                                      获得只满足条件的元素
  2. Select,SelectMany,                      针对一个(多个)查询对象,将查询的结果转换成需要的数据形式
  3. Take,TakeWhile,                          获得序列中指定位置之前(Take包括此位置,TakeWhile不包括)的元素
  4. Skip,SkipWhile,                           获得序列中指定位置之后(Skip不包括此位置,SkipWhile包括此位置)的元素
  5. OrderBy,OrderByDescending,        按升序(降序)方式对原有数据进行排序
  6. ThenBy,ThenByDescending,          按升序(降序)方式对原有数据进行次要排序
  7. Reverse,                                     将原有的数据颠倒排序
  8. GroupBy,                                    根据分组条件将数据放入不同的组中
  9. Distinct                                      去除数据中重复的值
  10. Union,                                        返回二个集合中内唯一的元素,即并集
  11. Intersect                                    返回同时出现在二个集合中的元素,即交集
  12. Except                                       返回一个集合中有另一个集合中没有的元素,即差集
  13. ToArray,ToList,ToDictionary,        将集合转换成数组,泛型列表,字典
  14. OfType                                      根据指定类型筛选IEnumerable的元素
  15. First,FirstOfDefault,                     返回集合中第一个元素或满足条件的第一个元素(FirstOfDefault没有满足条件的返回默认的值)
  16. ElementAt,ElementAtOrDefault     返回集合中指定位置的元素(ElementAtOrDefault索引超出范围则返回默认值)
  17. Range,                                      生成有关数字的集合
  18. Repeat                                      生成一个相关重复值的集合
  19. Any,                                          判断序列中是否有元素满足条件
  20. All,                                            判断序列中是否所有元素都满足条件
  21. Contains                                    判断序列中是否包含指定元素
  22. Average,Count,Max,Min,Sum        对集合取平均值,计数,取最大值,最小值,总和
ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
1 // where条件过滤
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值