zoukankan      html  css  js  c++  java
  • Linq to Entities基础之需要熟知14个linq关键字(from,where,select,group,let,on,by...)

    1.Linq基础

    《1》 关键词: from,in,group,by,where.....

    MSDN上总结的有14个关键词法。。。

    from xxxx in xxxx select => 三个不可缺少的条件。。。 【最基础的框架】

    第一:这是语法糖。。。
    第二:能够往sql上靠近。。。 (为了更好的理解)

    using (SchoolDBEntities db = new SchoolDBEntities())
    {
    var query = from s in db.Students
    select s;

    foreach (var item in query)
    {
    Console.WriteLine(item.StudentID+","+item.StudentName);
    }
    }


    where词法: 做筛选操作

    var query = from s in db.Students
    where s.StudentName != "nihao"
    select s;


    group,into,by 词法: 分组的基础框架

    k,v的结构, v=>list

    Dictionary<T,List<T>>

    using (SchoolDBEntities db = new SchoolDBEntities())
    {
    var query = from s in db.Students
    group s by s.StudentName
    into g // g:就是刚才说到的 k,v结构。。。 Dictionary<string,List<Student>>
    select g;


    foreach (var item in query)
    {
    var mykey = item.Key;

    var myValue = item.ToList();
    }

    }

    orderby, ascending,descending. 在一起的。。。

    using (SchoolDBEntities db = new SchoolDBEntities())
    {
    var query = from s in db.Students
    group s by s.StudentName
    into g // g:就是刚才说到的 k,v结构。。。 Dictionary<string,List<Student>>
    orderby g.Key descending
    select g;


    foreach (var item in query)
    {
    var mykey = item.Key;

    var myValue = item.ToList();
    }
    }


    join词法。。。和 on ,equal,一起搭配使用的。。。因为我们需要做表的关联。。。


    using (SchoolDBEntities db = new SchoolDBEntities())
    {
    var query = from s in db.Students
    join a in db.StudentAddresses
    on s.StudentID equals a.StudentID
    select new { s, a };

    var list = query.ToList();
    }

    SELECT
    [Extent1].[StudentID] AS [StudentID],
    [Extent1].[StudentName] AS [StudentName],
    [Extent1].[RowVersion] AS [RowVersion],
    [Extent2].[StudentID] AS [StudentID1],
    [Extent2].[Address1] AS [Address1],
    [Extent2].[Address2] AS [Address2],
    [Extent2].[City] AS [City],
    [Extent2].[State] AS [State]
    FROM [dbo].[Student] AS [Extent1]
    INNER JOIN [dbo].[StudentAddress] AS [Extent2] ON [Extent1].[StudentID] = [Extent2].[StudentID]

    let词法: 临时变量


    static void Main(string[] args)
    {
    using (SchoolDBEntities db = new SchoolDBEntities())
    {
    var query = from s in db.Students
    let namelength = s.StudentName.Length
    select new { len = namelength, s };

    var list2 = query.ToList();
    }

    var list = new string[] { "123", "3" };

    foreach (var item in list)
    {
    var temp = item.Length; //这个temp就是let的功效

    Console.WriteLine();
    }
    }

    可以让这14个关键字随意组合,可以构成非常复杂的“表达式”。。。。嵌套,递归啊。。。。

    《2》 扩展方法,IQueryable上面扩展方法。。。

  • 相关阅读:
    Android调用WebService
    webKit和chromium的文章地址
    关注web前端
    第三次面向对象程序设计作业
    第二次面向对象程序设计作业
    面向对象程序作业一
    HashMap的存储原理
    关于MySql中使用IFNULL()函数失效的问题。
    利用反射操作bean的属性和方法
    几种String对象方法的区别
  • 原文地址:https://www.cnblogs.com/dragon-L/p/6528493.html
Copyright © 2011-2022 走看看