• LINQ↔Lambda↔SQL 互相“翻译”


    一个星期又过去了,又该总结一些零散的知识点。

    这次是关于SQL、Lambda、LINQ查询的一些知识,我使用LINQPad来做试验的,关于LINQPad怎么使用就不说了,下载下来自己摸索一下就会了

    准备两张表

    表名分别是:ATE_ItemData和StationProcessCode,至于数据类型嘛,这个自己随便定义吧。

    1、首先是查询全部数据

    1 SQL:
    2     select * from ATE_ItemData
    3 Lambda:
    4     ATE_ItemData.Select(a=>a)
    5 LINQ:
    6     from a in ATE_ItemData select a
    View Code

    2、查询部分数据

     1 SQL:
     2     select * from ATE_ItemData AS A
     3     inner join StationProcessCode AS S
     4     on A.ProcessCode=S.ProcessCode
     5 Lambda:
     6     ATE_ItemData.Join(StationProcessCode,
     7     a=>a.ProcessCode,b=>b.ProcessCode,(a,b)=>new
     8     {a.ID,a.PDO,b.TP1_Voltage,b.TP2_Voltage}
     9 LINQ:
    10     from a in ATE_ItemData
    11     join b in StationProcessCode equals b.ProcessCode
    12     select new{a.ID,a.PDO,b.TP1_Voltage,b.TP2_Voltage}
    View Code

    3、根据条件查询

    1 SQL:
    2     select ID,SN,PDO from where ID=1
    3 Lambda:
    4     ATE_ItemData.Where(a=>a.ID==1).Select(c=>new{c.ID,c.SN,c.PDO})
    5 LINQ:
    6     from a in ATE_ItemData where a.ID==1 select new{a.ID,a.SN,a.PDO}
    View Code

    4、多表联合查询(我只用两张表查询)

     1 SQL:
     2     select * from ATE_ItemData AS A
     3     inner join StationProcessCode AS S
     4     ON A.ProcessCode=S.ProcessCode
     5 Lambda:
     6     ATE_ItemData.Join(StationProcessCode, a=>a.ProcessCode,
     7     b=>b.ProcessCode, (a,b)=> new     
     8     {a.ID,a.PDO,a.SN,b.TP1_Voltagge,TP2_Voltage})
     9 LINQ:
    10     from a in ATE_ItemData
    11     join b in StationProcessCodes
    12     on a.ProcessCode equals b.ProcessCode
    13     select new {a.ID,a.PDO,a.SN,b.TP1_Voltage,TP2_Voltage}
    View Code

     5、排序查询

      5.1、正序排序

    1 SQL:
    2     select * from ATE_ItemData order by ID
    3 Lambda:
    4     ATE_ItemData.OrderBy(c=>c.ID)
    5 LINQ:
    6     from a in ATE_ItemData orderby a.ID select a
    View Code

      5.2、倒序排序

    1 SQL:
    2     select * from ATE_ItemData order by ID desc
    3 Lambda:
    4     ATE_ItemData.OrderByDescending(c=>c.ID)
    5 LINQ:
    6     from a in ATE_ItemData
    7     orderby a.ID descending
    8     select a
    View Code

    6、分组查询

     1 SQL:
     2     分组求和无条件查询
     3     select count(*) from ATE_ItemData group by PDO
     4     分组求和有条件查询
     5     select count(*) from ATE_ItemData group by PDO having count(*)>8
     6 Lambda:
     7     分组求和无条件查询
     8     ATE_ItemData.GroupBy(a=>a.PDO)。Select(b=>new{Num=b.Count()})
     9     分组求和有条件查询
    10     ATE_ItemData.GroupBy(a=>a.PDO).Where(b=>(b.Count()>8)).Select(b=>new{Num=b.Count()})
    11 LINQ:
    12     分组求和无条件查询
    13     from a in ATE_ItemData
    14     group by a.PDO into b
    15     select new{Num=b.Count()}
    16     分组求和有条件查询
    17     from a in ATE_ItemData
    18     group by a.PDO into b
    19     where b.Count()>8
    20     select new{Num=b.Count()}
    View Code
  • 相关阅读:
    双机调试环境部署
    VC++中通过MultiByteToWideChar将string|char*转换为wstring|wchar_t*
    Unicode环境下的类型转换
    SQL调优日记之发挥SQL性能与你的写法有关--对比三种方式实现相同功能
    从MS SQL删除大数据说开去
    Microsoft SQL Server Reporting Services (SSRS)报表技巧之在图表中增加参考线
    想个法子找出性能差的SQL
    MS SQL,数据库增长时众多表中谁是你关注的目标
    TSQL 日期处理总结
    投入.NET,我的第一篇BLOG
  • 原文地址:https://www.cnblogs.com/LiGengMing/p/5154872.html
Copyright © 2020-2023  润新知