LINQ用法总结
之前一直用sql和拉姆达表达式,一直感觉linq不好用。用熟练了感觉期功能好强大,查询性能例外考究。这里讲讲基本用法。
内联查询:
var list2 = (from a in db.Role where a.IsDel==true
join b in db.UserRole on a.Id equals b.RoleId where b.Id>
where a.Id >
select new
{
a.Id,
b.RoleId
}
).ToList();
跟踪sql得到:
SELECT
[Extent1].[Id] AS [Id],
[Extent2].[RoleId] AS [RoleId]
FROM [dbo].[Role] AS [Extent1]
INNER JOIN [dbo].[UserRole] AS [Extent2] ON [Extent1].[Id] = [Extent2].[RoleId]
WHERE ( = [Extent1].[IsDel]) AND ([Extent2].[Id] > ) AND ([Extent1].[Id] > )
左连表查询:
var list3 = (from a in db.Role
join b in db.UserRole on a.Id equals b.RoleId into temp
from ur in temp.DefaultIfEmpty()
select new
{
a.Id,
ur.UserId
}).ToList();
sql:
SELECT
[Extent1].[Id] AS [Id],
[Extent2].[UserId] AS [UserId]
FROM [dbo].[Role] AS [Extent1]
LEFT OUTER JOIN [dbo].[UserRole] AS [Extent2] ON [Extent1].[Id] = [Extent2].[RoleId]
order by:
var list4 = (from a in db.Role
join b in db.UserRole on a.Id equals b.RoleId
group a by a.Id into g
select new
{
g.Key,
Name=g.Max(x=>x.Name)
}).ToList();
sql:
SELECT
[GroupBy1].[K1] AS [Id],
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
[Extent1].[Id] AS [K1],
MAX([Extent1].[Name]) AS [A1]
FROM [dbo].[Role] AS [Extent1]
INNER JOIN [dbo].[UserRole] AS [Extent2] ON [Extent1].[Id] = [Extent2].[RoleId]
GROUP BY [Extent1].[Id]
) AS [GroupBy1]
in 查询:like的查询和in写法差不多,都是用Contains
int[] arr = { , };
var list1 = (from a in db.Role
where arr.Contains(a.Id)
select new Test
{
Id = a.Id,
list = db.UserRole.Where(x => x.RoleId == a.Id).ToList()
}
).ToList();
sql:
SELECT
[Project1].[Id] AS [Id],
[Project1].[C1] AS [C1],
[Project1].[Id1] AS [Id1],
[Project1].[UserId] AS [UserId],
[Project1].[RoleId] AS [RoleId]
FROM ( SELECT
[Extent1].[Id] AS [Id],
[Extent2].[Id] AS [Id1],
[Extent2].[UserId] AS [UserId],
[Extent2].[RoleId] AS [RoleId],
CASE WHEN ([Extent2].[Id] IS NULL) THEN CAST(NULL AS int) ELSE END AS [C1]
FROM [dbo].[Role] AS [Extent1]
LEFT OUTER JOIN [dbo].[UserRole] AS [Extent2] ON [Extent2].[RoleId] = [Extent1].[Id]
WHERE [Extent1].[Id] IN (, )
) AS [Project1]
ORDER BY [Project1].[Id] ASC, [Project1].[C1] ASC
上面in查询,我研究稍微深入了点,单独写查询看linq是做一次连接还是多长,结果验证是内部做处理,一次链接完成,直接颠覆了我以前的观念。先记录到这里
LINQ用法总结的更多相关文章
- linq用法整理
linq用法整理 普通查询 var highScores = from student in students where student.ExamScores[exam] > score se ...
- Linq用法笔记
一.什么是Linq? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. ...
- Linq用法小记
一.什么是Linq? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. ...
- 2017年12月13日 LinQ用法基本的增删改查
LinQ是什么? LinQ是语言集成的查询,是用于C#跟Vb的扩展语言 LinQ的用法 新建一个App_Code文件夹,在文件夹下添加一个数据LinQ to SQL类,可以直接直接点击服务器管理器然后 ...
- 第十六节:Linq用法大全(四)
1. OfType 获取集合中中指定类型元素. , , , , , "aaa", "bbb" }; int max = obj.OfType<int> ...
- Linq 用法笔记
Linq中怎么用 between…and? var query = from p in context.Parent from c in context.Child.Where(x => p.c ...
- Jquery.Linq用法
下载:http://linqjs.codeplex.com/ LINQ Pad Enumerable.Range(0, 20).Where("$ % 3 == 0").Select ...
- c# LINQ用法
一.什么是LINQ LINQ(读音link)代表语言集成查询(Language Integrated Query),是.NEt框架的扩展,它允许我们用SQL查询数据库的方式来查询数据的集合,使用它,你 ...
- LINQ 用法,返回结果不是在定义时取值,而是在调用时实时取值,有意思!
var names = new List<string> { "Nino o", "Alberto", "Juan", &quo ...
随机推荐
- 在electron-vue项目中使用element-ui
1.安装element-ui npm install element-ui -S 2.在main.js中 import ElementUI from 'element-ui'import 'eleme ...
- gnome/KDE安装,gnome出现问题,重新安装nvdia驱动, Linux(CentOS7) NVIDIA GeForece GTX 745 显卡驱动
新安装显示gtx745驱动NVIDIA-Linux-x86_64-346.59.run, yum groupremove kde-desktop yum groupinstall "Desk ...
- LeetCode 24. Swap Nodes in Pairs (两两交换链表中的节点)
题目标签:Linked List 题目给了我们一组 linked list,让我们把每对nodes 互换位置. 新键一个dummy node,然后遍历list,每次建立 s1 和 s2 记录两个点,然 ...
- Linux下使用Eclipse 远程调试
1 开启端口 修改/apache-tomcat-7.0.40/bin/catalina.sh 在合适的位置(请自行判断,只要有JAVA_OPTS的设定前后即可)插入下面的设定:UI_DEBUG=&qu ...
- 3.7.4 Tri0 and tri1 nets
Frm: IEEE Std 1364™-2001, IEEE Standard Verilog® Hardware Description Language The tri0 and tri1 net ...
- java.lang.NoSuchMethodError: com.google.common.hash.HashFunction.hashInt(I)Lcom/google/common/hash/HashCode; 解决办法
今天在java 上运行spark查询的时候出现一个问题: java.lang.NoSuchMethodError: com.google.common.hash.HashFunction.hashIn ...
- 22个Photoshop网页设计教程网站推荐
这些网站都会经常更新一些优秀且高质量的Web界面设计教程.如果你热爱网页设计并且经常搜集各种界面设计教程,那么你一定要把下面这些网站收藏起来. 您还可以参考以下网页设计相关教程及资源:<Web ...
- java排序及泛型
一.用泛型实现快排,可以传入不通类型进行排序,比如String数组,Integer数组. /** * 快速排序 * * @author chx * */ public class QuickSort ...
- boost 条件变量
// boost 条件变量 // 做个简单的笔记 #include <boost/thread/mutex.hpp> #include <boost/thread/condition ...
- .net 裁剪图片
private void GetImg() { ) { return; } ]; string[] imgsize = Request["imgsize"].Split('& ...