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 ...
随机推荐
- Tkinter Scrollbar(垂直滚动部件)
Python GUI - Tkinter Scrollbar:这个小工具提供了一个幻灯片控制器,用于实现垂直滚动部件,如列表框,文本和帆布.请注意,您还可以创建进入部件的水平滚动条 这个小工具提供 ...
- Python list和dict方法
###list类的方法 ###append 列表内最后增加一个元素a = [1,2,3,4,5,6,"dssdsd"]a.append(5)print(a) ###clear 清空 ...
- 实验楼HTML基础入门学习
HTML基本介绍 HTML,一种描述网页的语言 结构 html head title script body ... 文档 <html> <head> <title> ...
- Bilateral Filtering(双边滤波) for SSAO
原网址:http://blog.csdn.net/bugrunner/article/details/7170471 1. 简介 图像平滑是一个重要的操作,而且有多种成熟的算法.这里主要简单介绍一下B ...
- github提交表情包
emoji-list emoji表情列表 目录 人物 自然 事物 地点 符号 人物 :bowtie: :bowtie: :smile: :smile: :laughing: :laughing: :b ...
- StringUtils.hasText()
StringUtils.hasText(字符串) 如果字符串里面的值为null, "", " ",那么返回值为false:否则为true
- 【299】◀▶ IDL - LIST 函数
list 函数用来创建一个新的 list.list 可以包含不同的数据类型,包括数据.数组.结构体.指针.对象以及其他的 list 或者 哈希表. 序号 类名称 功能说明 语法 & 举 ...
- [iOS]使用autolayout的时候会有明明设置和父视图左右间距为0但却还有空隙问题
有时候设置左右与父视图间距为0但却还有空隙,relative to margin 作怪,到关系里面,把这个取消掉.如关系里面的 firstitem 如果显示 xxView.trailling.marg ...
- ubuntu linux常用指令(1)
序号 命令 说明 1 sudo su 从普通用户切换到root用户 2 su user 从root用户切换到普通用户 3 ls 列出当前目录的文件和目录,但是不包括隐藏文件和目录 4 ls -a 列出 ...
- 读书笔记 Week6 2018-4-12
Chap 24 重构 读书笔记 一.需求的变更 单纯就科目学习中的小项目来说,目标在一开始便被明确下来,即可定义一份严谨的列表来描述功能.故在原来的编程经历中,只要上交了程序便一切都没事儿了,也没有重 ...