Linq之关键字基本查询

摘要:
Select指定执行查询时返回的序列中元素的类型和形式。根据指定的关键字值对查询结果进行分组。Into提供了一个标识符,它可以用作对联接、组或选择子句结果的引用。Orderby根据元素类型的默认比较器按升序或降序对查询结果进行排序。联接基于两个指定匹配条件之间的相等比较来联接两个数据源。让我们引入一个范围变量来存储查询表达式中子表达式的结果。联接子句中的上下文关键字。
子句说明
from指定数据源和范围变量(类似于迭代变量)。
where根据一个或多个由逻辑“与”和逻辑“或”运算符(&& 或 ||)分隔的布尔表达式筛选源元素。
select指定当执行查询时返回的序列中的元素将具有的类型和形式。
group按照指定的键值对查询结果进行分组。
into提供一个标识符,它可以充当对 join、group 或 select 子句的结果的引用。
orderby基于元素类型的默认比较器按升序或降序对查询结果进行排序。
join基于两个指定匹配条件之间的相等比较来联接两个数据源。
let引入一个用于存储查询表达式中的子表达式结果的范围变量。
injoin 子句中的上下文关键字。
onjoin 子句中的上下文关键字。
equalsjoin 子句中的上下文关键字。
bygroup 子句中的上下文关键字。
ascendingorderby 子句中的上下文关键字。
descendingorderby 子句中的上下文关键字。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1、from关键字

需求查询出班级信息

Linq:from g in Grades select g

对应Lambda:Grades.Select (g => g)

对应SQL:select * from Grade

2、where关键字

需求查询出语文成绩大于90的成绩表ID

Linq:from s in ScoreInfo where s.Chinese>90 select s.ScoreId

对应Lambda:ScoreInfo .Where (s => (s.Chinese > 90)) .Select (s => s.ScoreId)

对应SQL:select ScoreId from ScoreInfo where Chinese>90

3、group关键字

需求查询以工资为500的进行分组

Linq:from s in SalaryInfo group s by s.Salary

对应Lambda:SalaryInfo .GroupBy (s => s.Salary)

对应SQL:select Salary from  SalaryInfo group by Salary 

4、join关键字

需求根据成绩表id,对学生表进行关键

Linq: from s in StudentInfo join c in ScoreInfo on s.ScoreId equals  c.ScoreId  select new {s, c}

对应Lambda:StudentInfo
   .Join (
      ScoreInfo,
      s => s.ScoreId,
      c => c.ScoreId,
      (s, c) =>
         new 
         {
            s = s,
            c = c
         }
   )

对应SQL:

SELECT [t0].[StudentId], [t0].[ScoreId], [t0].[SName], [t0].[SAge], [t0].[SSex], [t0].[SPhone], [t1].[ScoreId] AS [ScoreId2], [t1].[Chinese], [t1].[Math], [t1].[English]

FROM [StudentInfo] AS [t0]
INNER JOIN [ScoreInfo] AS [t1] ON [t0].[ScoreId] = [t1].[ScoreId]

5、GroupJoin关键字

GroupJoin操作符常应用于返回“主键对象-外键对象集合”形式的查询,如成绩表主键---该主键下的所有学生信息

Linq:from s in ScoreInfo
join c in StudentInfo on s.ScoreId equals c.ScoreId into g
select new {s.ScoreId, list = g}

对应Lambda:ScoreInfo
   .GroupJoin (
      StudentInfo,
      s => s.ScoreId,
      c => c.ScoreId,
      (s, g) =>
         new 
         {
            ScoreId = s.ScoreId,
            list = g
         }
   )

对应SQL:

SELECT [t0].[ScoreId], [t1].[StudentId], [t1].[ScoreId] AS [ScoreId2], [t1].[SName], [t1].[SAge], [t1].[SSex], [t1].[SPhone], (
SELECT COUNT(*)
FROM [StudentInfo] AS [t2]
WHERE [t0].[ScoreId] = [t2].[ScoreId]
) AS [value]
FROM [ScoreInfo] AS [t0]
LEFT OUTER JOIN [StudentInfo] AS [t1] ON [t0].[ScoreId] = [t1].[ScoreId]
ORDER BY [t0].[ScoreId], [t1].[StudentId]




 




   

免责声明:文章转载自《Linq之关键字基本查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇洛谷训练新手村之“BOSS战入门综合练习1”题解js原型和原型链(用代码理解代码)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CSS之user-select——设置标签中的文字是否可被复制

  详细介绍请参考 http://www.css88.com/book/css/properties/user-interface/user-select.htm   CSS样式 user-select:none | text | all | element,默认情况下是text,表示标签中的文字可以被复制,none是不可被复制。   为了兼容各种浏览器,...

数据库编程基本练习题

 1、用一条SQL语句查询出每门课都大于80分的学生姓名  准备数据的sql代码: create table score( id int primary key auto_increment, name varchar(20), subject varchar(20), score int); insert into score values (nul...

mysql和Oracle在对clob和blob字段的处理

一、MySQL与Oracle数据库如何处理Clob,Blob数据类型 (1)不通数据库中对应clob,blob的类型如下: MySQL中:clob对应text,blob对应blob DB2/Oracle中:clob对应clob,blob对应blob (2)domain中对应的类型: clob对应String,blob对应byte[] clob对应ja...

mybatis教程:入门>>精通>>实战

以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此重新温习了一下 m...

Greenplum获取表结构

最近在折腾greenplum,遇到一个蛋疼的问题,那就是获取表结构,也就是建表语句。大家都知道在MySQL里面是非常easy的,show create table table_name 就搞定了,在gpdb里面就没这么容易,在查询大量资料以后终于找到了方法。那就是自己定义一个函数去获取,函数中可以嵌套python代码,非常的方便。但是资料中的代码有大量错...

ci框架 查询构造器类

$this->db->get() 该方法执行 SELECT 语句并返回查询结果,可以得到一个表的所有数据: $query = $this->db->get('mytable'); // Produces: SELECT * FROM mytable 第二和第三个参数用于设置 LIMIT 子句: $query = $this-&...