using System; using System.Collections.Generic; using System.Text; using System.Linq; namespace LinQ { class Program { static void Main(string[] args) { l1(); Console.WriteLine(); l2(); Console.WriteLine(); l3(); Console.WriteLine(); l4(); Console.WriteLine(); l5(); Console.WriteLine(); l6(); Console.WriteLine(); l7(); Console.WriteLine(); l8(); Console.WriteLine(); l9(); Console.WriteLine(); l10(); Console.Read(); } public static void l1() { int[] scores = new int[] { 88, 89, 100, 51, 23, 92, 81, 60 }; IEnumerable<int> scoreQuery = from scrore in scores where scrore > 70 select scrore; foreach (int i in scoreQuery) { Console.Write(i + " "); } } /*linq检索数据转换数据 *合并两个序列 */ class Student { public string StuNo { get; set; } public string StuName { get; set; } public string StuCollege { get; set; } public List<int> StuScores; } class Teacher { public string TeaNo { get; set; } public string TeaName { get; set; } public string TeaCollege { get; set; } } public static void l2() { List<Student> students = new List<Student>() { new Student{StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}}, new Student {StuNo ="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}} }; List<Teacher> teachers = new List<Teacher>() { new Teacher {TeaNo ="001",TeaName ="张华",TeaCollege ="信息工程学院"}, new Teacher {TeaNo ="002",TeaName ="王丽",TeaCollege ="机电学院"} }; var a = (from student in students where student.StuCollege == "信息工程学院" select student.StuName).Concat(from teacher in teachers where teacher.TeaCollege == "信息工程学院" select teacher.TeaName); Console.WriteLine("信息工程学院的老师和同学们有:"); foreach (var person in a) { Console.WriteLine(person); } } /* *选择源序列元素的一个或多个属性构成元素 */ public static void l3() { List<Student> students = new List<Student>() { new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores=new List<int> {97,92,81,60}}, new Student {StuNo ="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}} }; var a = from student in students select student.StuName; foreach (var person in a) { Console.WriteLine(person); } var a1 = from student in students select new { student.StuNo, student.StuName }; foreach (var person in a1) { Console.WriteLine("{0},{1}", person.StuNo, person.StuName); } } /* * LINQ的推迟查询 * **/ public static void l4() { List<string> Cites = new List<string> { "shanghai", "beijing", "xiamen", "qingdao", "xian" }; var cityWiths = from c in Cites where c.StartsWith("s") orderby c select c; Console.WriteLine("第一次查询名称以‘S’起始的城市"); foreach (string city in cityWiths) { Console.WriteLine(city); } Console.WriteLine(); Cites.Add("shengzhen"); Cites.Add("shenyang"); Console.WriteLine("第二次查询名称以‘s’起始的城市"); foreach (string city in cityWiths) { Console.WriteLine(city); } } /* * 标准查询操作符 * where 过滤操作符定义了返回元素的条件 * select 投射操作符用于把对象转换成另一个类型的对象 * orderby 排序操作符改变返回元素的顺序 * group by 组合运算符数据放在一个数组中 * Count,Sum,Min,Max,Average 合计操作符计算集合的一个值,利用这些合作操作符,可以计算所有值的总和,元素的个数,值最大和最小的元素,平均值 * Distinct 从集合中删除重复的元素 * join 链接运算符用于链接两个集合 * **/ /* * where 子句 * **/ public static void l5() { List<Student> students = new List<Student>() { new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}}, new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}} }; var a = (from student in students where student.StuCollege == "信息工程学院" && student.StuScores.Average() > 75 select student.StuName); foreach (var person in a) { Console.WriteLine(person); } } /* * orderby子句 * **/ public static void l6() { List<Student> students = new List<Student>() { new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}}, new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}} }; var a = from student in students orderby student.StuName descending select student.StuName; foreach (var person in a) { Console.WriteLine(person); } } /* * group by子句 * **/ public static void l7() { List<Student> students = new List<Student>() { new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}}, new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}}, new Student {StuNo ="03",StuName ="王五",StuCollege ="机电学院",StuScores =new List<int> {96,95,79,90}} }; var a = from student in students group student by student.StuCollege into collegeGroup select new { College = collegeGroup.Key, Count = collegeGroup.Count() }; foreach (var person in a) { Console.WriteLine("{0}{1}", person.College, person.Count); } } /* * 合计操作符 **/ public static void l8() { List<Student> students = new List<Student>() { new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}}, new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}}, new Student {StuNo ="03",StuName ="王五",StuCollege ="机电学院",StuScores =new List<int> {96,95,79,90}} }; int a = (from student in students select students).Count(); //Sum,Min,Max,Average原理与其相同 Console.WriteLine("学生总数为:"); Console.WriteLine(a); } /* * Distinct运算符 * **/ public static void l9() { List<Student> students = new List<Student>() { new Student {StuNo ="01",StuName ="张三",StuCollege ="信息工程学院",StuScores =new List<int> {97,92,81,60}}, new Student {StuNo="02",StuName ="李四",StuCollege ="机电学院",StuScores =new List<int> {90,95,78,70}}, new Student {StuNo ="03",StuName ="王五",StuCollege ="机电学院",StuScores =new List<int> {96,95,79,70}} }; var a = (from student in students select student.StuCollege).Distinct(); foreach (var college in a) { Console.WriteLine(college); } } /* * join用于链接两个集合查询语法为join...in...on....equals * **/ class Student3 { public string StuNo { get; set; } public string StuName { get; set; } public string CollegeNo { get; set; } public List<int> StuScores; } class College { public string CollegeNo { get; set; } public string CollegeName { get; set; } } public static void l10() { List<Student3> students = new List<Student3>() { new Student3 {StuNo ="01",StuName ="张三",CollegeNo ="001",StuScores =new List<int> {97,92,81,60}}, new Student3 {StuNo="02",StuName ="李四",CollegeNo ="002",StuScores =new List<int> {90,95,78,70}}, new Student3 {StuNo ="03",StuName ="王五",CollegeNo ="003",StuScores =new List<int> {96,95,79,70}} }; List<College> colleges = new List<College>() { new College {CollegeNo="001",CollegeName ="信息工程学院" }, new College {CollegeNo ="002",CollegeName ="机电学院"} }; var a = from student in students join college in colleges on student.CollegeNo equals college.CollegeNo select new { student.StuName, college.CollegeName }; foreach (var person in a) { Console.WriteLine("{0 } {1}", person.StuName, person.CollegeName); } } } }