Linq常用语法

来源:互联网 发布:国研网数据子库 编辑:程序博客网 时间:2024/05/01 15:18

Linq(Language Intergarted Query)是对数据查询操作的语句
使用Linq语句可以对查询语句里字符串进行检查
使用Linq语句查询的要求:实现了IEnumerable接口

class Program{    static void Main(string[] args)      {         int[] number = {10,8,20,44,1, 23, 13, 4, 65, 6};    //LINQ的查询语法         var set = from i in number                   where i%2 == 0                   orderby i                   select i;         foreach (var j in set)         {             Console.WriteLine(j);         }         Console.WriteLine("Method LINQ Query:");   //C#方法型LINQ语句         var bigger = number.Where(x =>x>10).OrderByDescending(x=>x).First();         Console.WriteLine(bigger);          }}

LINQ的query语法三步骤:

1.数据源(数据源要求实现了IEnumerable接口的对象)

2.查询语句

3.执行(使用foreachb遍历或调用count()等方法)

public class student    {        public int Id { get; set; }        public string Name { get; set; }        public int Age { get; set; }    }public class electiveGrade{     public int stuId { get; set; }     public string courseName { get; set; }     public double grade { get; set; }}static void Main(string[] args){    //创建数据源    List<student>students=new List<student>();    students.Add(new student() {Id = 1,Name = "John",Age = 19});    students.Add(new student() { Id = 2, Name = "Jim", Age = 18 });    students.Add(new student() { Id = 3, Name = "Tom", Age = 19 });    students.Add(new student() { Id = 4, Name = "Liutao", Age = 22 });    //编写查询语句    var query1 = from stu in students                 group stu by stu.Age;    //使用group对要查询的语句进行分组,查询出来的结果按年龄分成一组    foreach (var i in query1)    {       foreach (var VARIABLE in i)       {         Console.Write("{0}  {1}  {2} ",VARIABLE.Id,VARIABLE.Name,VARIABLE.Age);         Console.WriteLine();        }     }     Console.WriteLine();    List<electiveGrade>electiveGrades=new List<electiveGrade>();    electiveGrades.Add(new electiveGrade() {courseName = "高等数学",grade = 99,stuId = 1});    electiveGrades.Add(new electiveGrade() { courseName = "高等数学", grade = 59, stuId = 2 });    electiveGrades.Add(new electiveGrade() { courseName = "高等数学", grade = 42, stuId = 11 });    electiveGrades.Add(new electiveGrade() { courseName = "高等数学", grade = 75, stuId = 4 })    //join用于连接两个不同的数据源对象,其作用类似于数据库里表间连接操作    var connect = from score in electiveGrades                  join stu in students on score.stuId equals stu.Id                  select new                 {stuGrade=score.grade,stuID=stu.Id,stuName=stu.Name,stuAge=stu.Age};    foreach (var index in connect)    {        Console.Write("{0}  {1} {2} {3}",        index.stuID,index.stuName,index.stuGrade,index.stuAge);        Console.WriteLine();    }}

此外还有letinto关键字。
可以用into关键字对分组得到的结果做临时的打包用于再次过滤;
let关键字的作用类似于定义一个中间变量
例:

string[] set={"Hello world ! Welcome to learn Linq","Thank You"};var res=from str in set        let words=str.Spilt(" ")        from word in words        let w=word.Tolower()        select w;

words为分割出来的字符串集合,下面再把words作为一个集合把大写字符转换为小写。

0 0
原创粉丝点击