一、LINQ查询表达式基础
1、简单的 LINQ 查询
1 static class Program 2 { 3 static void Main(string[] args) 4 { 5 List<Student> list = new List<Student>() 6 { 7 new Student(){Id=1,Name="AA",score=60}, 8 new Student(){Id=1,Name="BB",score=82}, 9 new Student(){Id=1,Name="CC",score=90}, 10 new Student(){Id=1,Name="DD",score=98}, 11 new Student(){Id=1,Name="EE",score=76}, 12 }; 13 var itemList = from l in list 14 where l.score > 80 15 orderby l.score ascending 16 select l; 17 foreach (var item in itemList) 18 { 19 Console.WriteLine("{0}-{1}", item.Name, item.score); 20 } 21 } 22 } 23 /// <summary> 24 /// Student Model 25 /// </summary> 26 public class Student 27 { 28 public int Id { set; get; } 29 30 public string Name { set; get; } 31 32 public int score { set; get; } 33 }
2、Where 的使用
1 static void Main(string[] args) 2 { 3 List<Student> list = new List<Student>() 4 { 5 new Student(){Id=1,Name="AA",score=60}, 6 new Student(){Id=1,Name="BB",score=82}, 7 new Student(){Id=1,Name="CC",score=90}, 8 new Student(){Id=1,Name="DD",score=84}, 9 new Student(){Id=1,Name="EE",score=76}, 10 }; 11 var itemList = list.Where(p => p.score > 80); 12 foreach (var item in itemList) 13 { 14 Console.WriteLine("{0}-{1}", item.Name, item.score); 15 } 16 }
3、First,FirstOrDefault 和 Last,LastOrDefault;尽量使用 FirstOrDefault 和 LastOrDefault ,可避免 InvalidOperationException 异常
1 var item1 = list.Where(p => p.score > 180).First(); 2 var item2 = list.Where(p => p.score > 180).FirstOrDefault(); 3 var item3 = list.Where(p => p.score > 180).Last(); 4 var item4 = list.Where(p => p.score > 180).LastOrDefault();
二、分组联接
1 static void Main(string[] args) 2 { 3 List<Student> studentlist = new List<Student>() 4 { 5 new Student(){Id=1,Name="AA",score=60}, 6 new Student(){Id=2,Name="BB",score=82}, 7 new Student(){Id=3,Name="CC",score=90}, 8 new Student(){Id=4,Name="DD",score=84}, 9 new Student(){Id=5,Name="EE",score=76}, 10 }; 11 List<Book> bookList = new List<Book>() 12 { 13 new Book(){Id=1,BokkName="C++"}, 14 new Book(){Id=1,BokkName="C"}, 15 new Book(){Id=2,BokkName="JAVA"}, 16 new Book(){Id=2,BokkName="C#"}, 17 new Book(){Id=3,BokkName="ASP.NET"}, 18 }; 19 var doubleModel = from s in studentlist 20 join b in bookList on s.Id equals b.Id 21 where s.Id == 1 22 select new { Name = s.Name, bookName = b.BokkName }; 23 24 foreach (var item in doubleModel) 25 { 26 Console.WriteLine("{0}-{1}",item.Name,item.bookName); 27 } 28 }
三、自定义
list.GroupBy(n => new { n.StudentName, n.StudentCode }).Select(x => x.First())
未完待续。。。