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...)的更多相关文章

  1. Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)

    1.在工作中碰到这样一个问题: 使用linq时,需要查询两个表,在这两张表中关联字段分别是int,和varchar()也就是string,在linq中对这两个字段进行关联, 如果强制类型转换两个不同类 ...

  2. LINQ to Entities 中的查询

    MSDN地址:https://msdn.microsoft.com/zh-cn/library/bb399367%28v=vs.100%29.aspx .NET Framework 4 查询是一种从数 ...

  3. xBIM 基础14 使用LINQ实现最佳性能(优化查询)

    系列目录    [已更新最新开发文章,点击查看详细]  LINQ代表语言集成查询,它是3.5版以来的.NET Framework的一部分.它实现延迟执行,这意味着您可以链接查询语句,并且在您实际迭代结 ...

  4. LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayIndex”

    我就不屁话,能一张图就解决的就不说话了 2015-03-28 14:53:24,440 [10] ERROR log - System.NotSupportedException: LINQ to E ...

  5. LINQ to Entities 和LINQ to Objects 的区别

    本文资料来源:http://www.codeproject.com/Articles/246861/LINQ-to-Entities-Basic-Concepts-and-Features) LINQ ...

  6. LINQ to Entities 查询语法

    转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET  ...

  7. [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询

    此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper 支持.net framework4.5.1 ...

  8. 【转】Entity Framework技术系列之7:LINQ to Entities

    前言 LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码,以与查询数据库相同的方式操作内存数据. L ...

  9. mvc ef LINQ to Entities 不识别方法“Int32 Parse(System.String)”,因此该方法无法转换为存储表达式。

    private sys_User GetUserInfo() { sys_User model = null; var userId = Convert.ToInt32(AccountHelper.G ...

随机推荐

  1. 超简单让ubuntu开启wifi热点(亲测16.04与14.04可用)

    今天教大家一个简单方法让ubuntu发散wifi热点给手机或者其他设备使用. 首先,创建一个普通的热点,点击右上角的网络,然后选择下拉菜单中的编辑连接,然后出现以下界面. 然后点击增加,连接类型选接W ...

  2. 上传项目到git

    …or create a new repository on the command line   echo "# test" >> README.md git ini ...

  3. sql开启xp_cmdshell

    sql开启xp_cmdshell sp_configure reconfigure go sp_configure reconfigure go

  4. HTML怎么让img 等比例缩放

    在img标签里面只设置宽,不设置高,图片就会等比例缩放.

  5. python:一个轻松的递归逻辑

    #递归 age = 10 def dig(n): global age#函数dig引用全局变量age age += 2 n -= 1 if n != 1:#如果满足条件,则调用本身 dig(n) di ...

  6. 如何把MyEclipse中的web项目导入到Eclipse中运行

    有时我们需要将MyEclipse中的项目导入到Eclipse中运行,如果不注意到一些细节,会造成无法运行的后果.下面就说说具体操作: 如何导入到Eclipse就不在重述了,导入后出现如下错误: 与上面 ...

  7. Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration

    在Apache的配置文件 httpd.conf 中开启  LoadModule headers_module modules/mod_headers.so  即可解决这个问题.

  8. C#自省

    [C#自省] 1.根据string,获取type.Type.GetType 方法,获取具有指定名称的 Type,执行区分大小写的搜索. 2.根据obj,获取type.Object.GetType 方法 ...

  9. 【HDU5862】Counting Intersections

    题意 有n条线段,且都平行于坐标轴.对于每条线段,给出两个端点的坐标.问一共有多少个线段的交点. 分析 最最简单的扫描法了.用线段树或者树状数组都可以. 由题目可知,线段只有两种,要么平行于x轴要么平 ...

  10. Git,GitHub以及GitLab的区别

    Git - 版本控制工具 Github - 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等 GitLab - 基于Git的项目管理软件 Git分布式版本控制系统 Git是一款 ...