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上面扩展方法。。。
Linq to Entities基础之需要熟知14个linq关键字(from,where,select,group,let,on,by...)的更多相关文章
- Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)
1.在工作中碰到这样一个问题: 使用linq时,需要查询两个表,在这两张表中关联字段分别是int,和varchar()也就是string,在linq中对这两个字段进行关联, 如果强制类型转换两个不同类 ...
- LINQ to Entities 中的查询
MSDN地址:https://msdn.microsoft.com/zh-cn/library/bb399367%28v=vs.100%29.aspx .NET Framework 4 查询是一种从数 ...
- xBIM 基础14 使用LINQ实现最佳性能(优化查询)
系列目录 [已更新最新开发文章,点击查看详细] LINQ代表语言集成查询,它是3.5版以来的.NET Framework的一部分.它实现延迟执行,这意味着您可以链接查询语句,并且在您实际迭代结 ...
- LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayIndex”
我就不屁话,能一张图就解决的就不说话了 2015-03-28 14:53:24,440 [10] ERROR log - System.NotSupportedException: LINQ to E ...
- LINQ to Entities 和LINQ to Objects 的区别
本文资料来源:http://www.codeproject.com/Articles/246861/LINQ-to-Entities-Basic-Concepts-and-Features) LINQ ...
- LINQ to Entities 查询语法
转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET ...
- [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询
此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper 支持.net framework4.5.1 ...
- 【转】Entity Framework技术系列之7:LINQ to Entities
前言 LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码,以与查询数据库相同的方式操作内存数据. L ...
- mvc ef LINQ to Entities 不识别方法“Int32 Parse(System.String)”,因此该方法无法转换为存储表达式。
private sys_User GetUserInfo() { sys_User model = null; var userId = Convert.ToInt32(AccountHelper.G ...
随机推荐
- 这样学Linux基本命令,事半功倍
命令基本格式 (1)命令提示符 如下是命令行的命令提示符,以此为例,讲解含义. 其中: root 当前登录用户名 localhost 主机名 ~ 当前所在的目录(即家目录,用户登录的初始位置) # 超 ...
- VS调试时JSON格式文件无法加载
VS调试时JSON格式文件无法加载 报错: 解决:在项目中的web.config中进行配置,configuration节中添加以下部份: <system.webServer> <st ...
- [转] FTP主动模式和被动模式的区别
转自原文FTP主动模式和被动模式的区别 基础知识: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口).通常2 ...
- log4j:WARN No appenders could be found for logger 解决办法
转自:https://blog.csdn.net/chw0629/article/details/80567936 使用log4j时不起作用,每次执行完出现以下提示: log4j:WARN No ap ...
- 4.redis 键
转自:http://www.runoob.com/redis/redis-tutorial.html Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令 ...
- 用letsencrypt搭建免费的https网站--nginx篇
环境:阿里云服务器centos7.3,nignx,letsencrypt做免费的https证书 Let’s Encrypt官网:https://letsencrypt.org/ 1.服务器开放端口:4 ...
- 将本地Jar包安装到maven仓库中去
开发中会遇到无法通过pom.xml下载jar包的情况,遇到这种情况我们可以手动在本地安装jar包到本地仓库中去,这样就可以下次再用到的话不用再次联网下载,具体以oracle的驱动包ojdbc6.jar ...
- curl 访问 k8s
curl https://mhc:6443/api --cacert ssl/ca.crt --key client_ssl/cs_client.key --cert client_ssl/cs_cl ...
- cf499B-Lecture 【map】
http://codeforces.com/problemset/problem/499/B B. Lecture You have a new professor of graph theo ...
- Qt + OpenSenceGraph(osg) 加载OSG模型