Linq常用语法

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作为一个集合把大写字符转换为小写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值