首页 > 其他 > 详细

Linq 及相关方法的使用

时间:2021-01-07 13:00:48      阅读:18      评论:0      收藏:0      [点我收藏+]
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading;
  6 using System.Threading.Tasks;
  7 
  8 namespace MyLinq
  9 {
 10     /// <summary>
 11     /// Linq To Object
 12     /// .NetFramework3.0的一个非常重大的改变
 13     /// </summary>
 14     public class LinqShow
 15     {
 16         #region Data Init
 17         private List<Student> GetStudentList()
 18         {
 19             #region 初始化数据
 20             List<Student> studentList = new List<Student>()
 21             {
 22                 new Student()
 23                 {
 24                     Id=1,
 25                     Name="赵亮",
 26                     ClassId=2,
 27                     Age=35
 28                 },
 29                 new Student()
 30                 {
 31                     Id=1,
 32                     Name="再努力一点",
 33                     ClassId=2,
 34                     Age=23
 35                 },
 36                  new Student()
 37                 {
 38                     Id=1,
 39                     Name="王炸",
 40                     ClassId=2,
 41                     Age=27
 42                 },
 43                  new Student()
 44                 {
 45                     Id=1,
 46                     Name="疯子科学家",
 47                     ClassId=2,
 48                     Age=26
 49                 },
 50                 new Student()
 51                 {
 52                     Id=1,
 53                     Name="",
 54                     ClassId=2,
 55                     Age=25
 56                 },
 57                 new Student()
 58                 {
 59                     Id=1,
 60                     Name="黑骑士",
 61                     ClassId=2,
 62                     Age=24
 63                 },
 64                 new Student()
 65                 {
 66                     Id=1,
 67                     Name="故乡的风",
 68                     ClassId=2,
 69                     Age=21
 70                 },
 71                  new Student()
 72                 {
 73                     Id=1,
 74                     Name="晴天",
 75                     ClassId=2,
 76                     Age=22
 77                 },
 78                  new Student()
 79                 {
 80                     Id=1,
 81                     Name="旭光",
 82                     ClassId=2,
 83                     Age=34
 84                 },
 85                  new Student()
 86                 {
 87                     Id=1,
 88                     Name="oldkwok",
 89                     ClassId=2,
 90                     Age=30
 91                 },
 92                 new Student()
 93                 {
 94                     Id=1,
 95                     Name="乐儿",
 96                     ClassId=2,
 97                     Age=30
 98                 },
 99                 new Student()
100                 {
101                     Id=1,
102                     Name="暴风轻语",
103                     ClassId=2,
104                     Age=30
105                 },
106                 new Student()
107                 {
108                     Id=1,
109                     Name="一个人的孤单",
110                     ClassId=2,
111                     Age=28
112                 },
113                 new Student()
114                 {
115                     Id=1,
116                     Name="小张",
117                     ClassId=2,
118                     Age=30
119                 },
120                  new Student()
121                 {
122                     Id=3,
123                     Name="阿亮",
124                     ClassId=3,
125                     Age=30
126                 },
127                   new Student()
128                 {
129                     Id=4,
130                     Name="37度",
131                     ClassId=4,
132                     Age=30
133                 }
134                   ,
135                   new Student()
136                 {
137                     Id=4,
138                     Name="关耳",
139                     ClassId=4,
140                     Age=30
141                 }
142                   ,
143                   new Student()
144                 {
145                     Id=4,
146                     Name="耳机侠",
147                     ClassId=4,
148                     Age=30
149                 },
150                   new Student()
151                 {
152                     Id=4,
153                     Name="Wheat",
154                     ClassId=4,
155                     Age=30
156                 },
157                   new Student()
158                 {
159                     Id=4,
160                     Name="Heaven",
161                     ClassId=4,
162                     Age=22
163                 },
164                   new Student()
165                 {
166                     Id=4,
167                     Name="等待你的微笑",
168                     ClassId=4,
169                     Age=23
170                 },
171                   new Student()
172                 {
173                     Id=4,
174                     Name="",
175                     ClassId=4,
176                     Age=25
177                 },
178                   new Student()
179                 {
180                     Id=4,
181                     Name="混无痕",
182                     ClassId=4,
183                     Age=26
184                 },
185                   new Student()
186                 {
187                     Id=4,
188                     Name="37度",
189                     ClassId=4,
190                     Age=28
191                 },
192                   new Student()
193                 {
194                     Id=4,
195                     Name="新的世界",
196                     ClassId=4,
197                     Age=30
198                 },
199                   new Student()
200                 {
201                     Id=4,
202                     Name="Rui",
203                     ClassId=4,
204                     Age=30
205                 },
206                   new Student()
207                 {
208                     Id=4,
209                     Name="",
210                     ClassId=4,
211                     Age=30
212                 },
213                   new Student()
214                 {
215                     Id=4,
216                     Name="肩膀",
217                     ClassId=4,
218                     Age=30
219                 },
220                   new Student()
221                 {
222                     Id=4,
223                     Name="孤独的根号三",
224                     ClassId=4,
225                     Age=30
226                 }
227             };
228             #endregion
229             return studentList;
230         }
231         #endregion
232 
233         public void Show()
234         {
235             List<Student> studentList = this.GetStudentList();
236             //常规情况下数据过滤
237             //{
238             //    //年纪小于30
239             //    var list = new List<Student>();
240             //    foreach (var item in studentList)
241             //    {
242             //        if (item.Age < 30)
243             //        {
244             //            list.Add(item);
245             //        }
246             //    }
247             //    {
248             //        Console.WriteLine("*****************************************");
249             //        var result = studentList.ElevenWhere<Student>(s => s.Age < 30);
250             //        foreach (var item in result)
251             //        {
252             //            Console.WriteLine(item.Name);
253             //        }
254             //    }
255             //    {
256             //        Console.WriteLine("*****************************************");
257             //        var result = studentList.ElevenWhereIterator<Student>(s => s.Age < 30);
258             //        foreach (var item in result)
259             //        {
260             //            Console.WriteLine(item.Name);
261             //        }
262             //    }
263 
264             //}
265 
266             //{
267             //    //Name长度大于2的
268             //    var list = new List<Student>();
269             //    foreach (var item in studentList)
270             //    {
271             //        if (item.Name.Length > 2)
272             //        {
273             //            list.Add(item);
274             //        }
275             //    }
276 
277             //    //var result = ExtendMethod.ElevenWhere(studentList, s => s.Name.Length > 2);
278             //    var result = studentList.ElevenWhere(s => s.Name.Length > 2);
279             //}
280 
281             //{
282             //    //N个条件叠加
283             //    var list = new List<Student>();
284             //    foreach (var item in studentList)
285             //    {
286             //        if (item.Id > 1
287             //            && item.Name != null
288             //            && item.ClassId == 1
289             //            && item.Age > 20)
290             //        {
291             //            list.Add(item);
292             //        }
293             //    }
294             //    var result = studentList.ElevenWhere(item => item.Id > 1
295             //                                            && item.Name != null
296             //                                            && item.ClassId == 1
297             //                                            && item.Age > 20);
298             //}
299 
300             //{
301             //    new List<int>() { 12423434, 45, 53, 45, 43, 534, 534, 543, 5, 435, 45, 45, }
302             //    .ElevenWhere(i => i > 10);
303             //}
304 
305             #region Linq 扩展方法&表达式
306             {
307                 var list = studentList.Where<Student>(s => s.Age < 30);//陈述句   言出法随 封装的好
308                 foreach (var item in list)
309                 {
310                     Console.WriteLine("Name={0}  Age={1}", item.Name, item.Age);
311                 }
312             }
313             {
314                 Console.WriteLine("********************");
315                 var list = from s in studentList
316                            where s.Age < 30
317                            select s;
318 
319                 foreach (var item in list)
320                 {
321                     Console.WriteLine("Name={0}  Age={1}", item.Name, item.Age);
322                 }
323             }
324             #endregion
325 
326             #region linq to object Show
327             {
328                 //这里有一堆学生  每个学生都转换成别的对象
329 
330                 Console.WriteLine("**********投影**********");
331                 var list = studentList.Where<Student>(s => s.Age < 30)
332                                      .Select(s => new
333                                      {
334                                          IdName = s.Id + s.Name,
335                                          ClassName = s.ClassId == 2 ? "高级班" : "其他班"
336                                      });
337                 foreach (var item in list)
338                 {
339                     Console.WriteLine("Name={0}  Age={1}", item.ClassName, item.IdName);
340                 }
341             }
342             {
343                 Console.WriteLine("********************");
344                 var list = from s in studentList
345                            where s.Age < 30
346                            select new
347                            {
348                                IdName = s.Id + s.Name,
349                                ClassName = s.ClassId == 2 ? "高级班" : "其他班"
350                            };
351 
352                 foreach (var item in list)
353                 {
354                     Console.WriteLine("Name={0}  Age={1}", item.ClassName, item.IdName);
355                 }
356             }
357             {
358                 //IN查询
359                 var list = studentList.Where<Student>(s => s.Age < 30)
360                     .Where(s => new int[] { 1, 2, 3, 4 }.Contains(s.ClassId))
361                                      .Select(s => new
362                                      {
363                                          IdName = s.Id + s.Name,
364                                          ClassName = s.ClassId == 2 ? "高级班" : "其他班"
365                                      });
366             }
367 
368             {
369                 Console.WriteLine("********************");
370                 var list = studentList.Where<Student>(s => s.Age < 30)//条件过滤
371                                      .Select(s => new//投影
372                                      {
373                                          Id = s.Id,
374                                          ClassId = s.ClassId,
375                                          IdName = s.Id + s.Name,
376                                          ClassName = s.ClassId == 2 ? "高级班" : "其他班"
377                                      })
378                                      .OrderBy(s => s.Id)//排序
379                                                         //.ThenBy//2个都生效
380                                      .OrderByDescending(s => s.ClassId)//倒排  最后一个生效
381                                      .Skip(2)//跳过几条
382                                      .Take(3)//获取几条
383                                      ;
384                 foreach (var item in list)
385                 {
386                     Console.WriteLine($"Name={item.ClassName}  Age={item.IdName}");
387                 }
388             }
389             {
390                 var list = from s in studentList
391                            where s.Age < 30
392                            group s by s.ClassId into sg
393                            select sg;
394                 foreach (var data in list)
395                 {
396                     Console.WriteLine(data.Key);
397                     foreach (var item in data)
398                     {
399                         Console.WriteLine($"{item.Id} {item.Name} {item.Age}");
400                     }
401                 }
402             }
403             {//group by
404                 Console.WriteLine("********************");
405                 var list = from s in studentList
406                            where s.Age < 30
407                            group s by s.ClassId into sg
408                            select new
409                            {
410                                key = sg.Key,
411                                maxAge = sg.Max(t => t.Age)
412                            };
413                 foreach (var item in list)
414                 {
415                     Console.WriteLine($"key={item.key}  maxAge={item.maxAge}");
416                 }
417                 //group by new {s.ClassId,s.Age}
418                 //group by new {A=s.ClassId>1}
419             }
420             {
421                 //var list = studentList.GroupBy(s => new { s.ClassId, s.Age }).Select(sg => new
422                 //{
423                 //    key = sg.Key,
424                 //    maxAge = sg.Max(t => t.Age)
425                 //});
426                 //foreach (var item in list)
427                 //{
428                 //    item.ke
429                 //}
430             }
431             {
432                 Console.WriteLine("********************");
433                 var list = studentList.GroupBy(s => s.ClassId).Select(sg => new
434                 {
435                     key = sg.Key,
436                     maxAge = sg.Max(t => t.Age)
437                 });
438                 foreach (var item in list)
439                 {
440                     Console.WriteLine($"key={item.key}  maxAge={item.maxAge}");
441                 }
442             }
443             List<Class> classList = new List<Class>()
444                 {
445                     new Class()
446                     {
447                         Id=1,
448                         ClassName="初级班"
449                     },
450                     new Class()
451                     {
452                         Id=2,
453                         ClassName="高级班"
454                     },
455                     new Class()
456                     {
457                         Id=3,
458                         ClassName="微信小程序"
459                     },
460                 };
461             {
462                 var list = from s in studentList
463                            join c in classList on s.ClassId equals c.Id//不能用==只能equals
464                            select new
465                            {
466                                Name = s.Name,
467                                CalssName = c.ClassName
468                            };
469                 foreach (var item in list)
470                 {
471                     Console.WriteLine($"Name={item.Name},CalssName={item.CalssName}");
472                 }
473             }
474             {
475                 var list = studentList.Join(classList, s => s.ClassId, c => c.Id, (s, c) => new
476                 {
477                     Name = s.Name,
478                     CalssName = c.ClassName
479                 });
480                 foreach (var item in list)
481                 {
482                     Console.WriteLine($"Name={item.Name},CalssName={item.CalssName}");
483                 }
484             }
485             {//左连接
486                 var list = from s in studentList
487                            join c in classList on s.ClassId equals c.Id
488                            into scList
489                            from sc in scList.DefaultIfEmpty()//
490                            select new
491                            {
492                                Name = s.Name,
493                                CalssName = sc == null ? "无班级" : sc.ClassName//c变sc,为空则用
494                            };
495                 foreach (var item in list)
496                 {
497                     Console.WriteLine($"Name={item.Name},CalssName={item.CalssName}");
498                 }
499                 Console.WriteLine(list.Count());
500             }
501             {
502                 var list = studentList.Join(classList, s => s.ClassId, c => c.Id, (s, c) => new
503                 {
504                     Name = s.Name,
505                     CalssName = c.ClassName
506                 }).DefaultIfEmpty();//为空就没有了
507                 foreach (var item in list)
508                 {
509                     Console.WriteLine($"Name={item.Name},CalssName={item.CalssName}");
510                 }
511                 Console.WriteLine(list.Count());
512             }
513             {
514                 //Min  Max  Sum  
515             }
516             #endregion
517 
518             {
519                 //linq to sql
520                 IQueryable<Student> list = studentList.AsQueryable();
521                 list.Where<Student>(s => s.Age > 30);//操作数据库
522                 //list.Where<Student>(s =>
523                 //{
524                 //    Console.WriteLine("12354");
525                 //    return s.Age > 30;
526                 //});
527             }
528             {
529                 studentList.Where<Student>(s =>
530                 {
531                     Console.WriteLine("12354");
532                     return s.Age > 30;
533                 }
534                 );
535             }
536         }
537 
538     }
539 }

 

Linq 及相关方法的使用

原文:https://www.cnblogs.com/YZM97/p/14245138.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!