lambda表达式查询经验:IN 和groupby的使用
lambda In的用法:
lambda表达式查询没有IN这个方法,可以变通一下,in查询的数组是否包含在映射对象里面的集合里:
如下代码:
var departmentIDs = input.DepartmentIDs.Split(',').Select(s => int.Parse(s)).ToList();//这是从前端传进来的字符串数组,需要转换成int
db.whereLambda.Add(d => departmentIDs.Contains(d.DepartmentID));//whereLambda是where条件里面的lamdba表达式,db是上下文数据。这句话就是实体集合是否包含departmentIDs 。
SQL:select * from db where DepartmentID in(departmentIDs)
lambda groupby的用法
计算各种统计在数据库用group by
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组
然后计算,在数据库计算统计用的非常多
我们这里用lambda 表达式查询也能实现
//单个分组GROUP BY var rels= rel.GroupBy(a => a.PlatformName).Select(s=>new MarketInfoInvalidRatioExtend
{ BusinessName = s.Key,AssignNum=s.Sum(c=>c.AssignNum),InvalidNum=s.Sum(I=>I.InvalidNum)} ).ToList(); //多个分组GROUP BY var rel = db.FindList(10000, db.whereLambda, b => b.MKBTID, true).GroupBy(g => new
{ g.PlatformName, g.BusinessName, g.DepartmentName, g.ResourceName }).Select(s=>new MarketInfoInvalidRatioExtend
{ PlatformName=s.Key.PlatformName, BusinessName=s.Key.BusinessName, DepartmentName=s.Key.DepartmentName, ResourceName=s.Key.ResourceName,
AssignNum =s.Sum(w=>w.AssignNum), EmptyNum = s.Sum(w => w.EmptyNum), BlacklistNum=s.Sum(w=>w.BlacklistNum), ErrorNum= s.Sum(w => w.ErrorNum),
InvalidNum=s.Sum(w=>w.InvalidNum) });
注意的是Select NEW 一个新实体的本身不能与查询的集合实体相同,否则会报错“在 LINQ to Entities 查询中无法构造实体或复杂类型""”。

lambda表达式查询经验:IN 和groupby的使用的更多相关文章
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Util应用程序框架公共操作类(七):Lambda表达式公共操作类
前一篇扩展了两个常用验证方法,本文将封装两个Lambda表达式操作,用来为下一篇的查询扩展服务. Lambda表达式是一种简洁的匿名函数语法,可以用它将方法作为委托参数传递.在Linq中,大量使用La ...
- Linq专题之Lambda表达式
这一节我们讲的Lambda表达式跟匿名函数有关.Lambda表达式就是一个匿名函数,它可以包含表达式和语句,并且可以创建委托和表达式树. Lambda表达式的组成: 输入参数.Lambda运算符(=& ...
- Lambda表达式的本质是匿名函数
1.委托的简介: 委托可以简单的理解为方法的列表,添加的方法的参数类型,个数,顺序必须和委托一致, 也就是说委托起到了托管方法的作用,并且约束了要调用的方法. //1声明委托 public deleg ...
- MybatisPlus Lambda表达式 聚合查询 分组查询 COUNT SUM AVG MIN MAX GroupBy
一.序言 众所周知,MybatisPlus在处理单表DAO操作时非常的方便.在处理多表连接连接查询也有优雅的解决方案.今天分享MybatisPlus基于Lambda表达式优雅实现聚合分组查询. 由于视 ...
- Lambda表达式与标准运算符查询
class Program { static void Main(string[] args) { //Lambda表达式输出List集合每一项 List<string> list = n ...
- C# LINQ查询表达式用法对应Lambda表达式
C#编程语言非常优美,我个人还是非常赞同的.特别是在学习一段时间C#后发现确实在它的语法和美观度来说确实要比其它编程语言强一些(也可能是由于VS编译器的加持)用起来非常舒服,而且对于C#我觉得他最优美 ...
- lambda表达式和查询表达式
(1)Lambda表达式定义: Lambda是创建匿名函数的另一种形式.它比对应的匿名方法更加的简化.因此,所有的情况都推荐使用Lambda表达式. 它可以包括表达式和语句,并且用于创建委托和事件 ...
- EntityFramework动态多条件查询与Lambda表达式树
在常规的信息系统中, 我们有需要动态多条件查询的情况, 例如UI上有多个选择项可供用户选择多条件查询数据. 那么在.net平台Entity Framework下, 我们用Lambd ...
随机推荐
- iOS开发笔记 - 界面调试神器Reveal
http://blog.csdn.net/jackfrued/article/details/50934092 Reveal是iOS开发工具中的神器之一,它能够在应用程序运行过程中调试应用程序 ...
- IOS开发中深拷贝与浅拷贝
简而言之: 1.对不可变的非集合对象,copy是指针拷贝,mutablecopy是内容拷贝 2.对于可变的非集合对象,copy,mutablecopy都是内容拷贝 3.对不可变的数组.字典.集合等集合 ...
- Java经典案例之-判断质数(素数)
/** * 描述:任意输入两个数n,m(n<m)判断n-m之间有多少个素数,并输出所有素数. * 分析:素数即质数,除1和本身之外,不能被其他自然数整除的数. * 判断素数的方法为:用一个数分别 ...
- NetStream.appendBytes, 走向Flash P2P VOD的第一步
之前被告知可以自行实现Flash p2p的点播功能, 但一直疑惑, 印象中NetStream并未提供相关方法, 前天看订阅时发现的文章: ByteArray Access to NetStream i ...
- 搭建Node.js开发IDE环境WebStrom5 多图
1.下载前期准备 node.js下载地址 http://nodejs.org/ WebStrom5下载地址: http://download-ln.jetbrains.com/webide/WebSt ...
- ZooKeepr日志清理
http://blog.csdn.net/xiaolang85/article/details/21184293
- [nodejs] day1-创建服务器
一.使用匿名函数(新建文件service.js)创建一个服务器: var http = require("http"); //Node.js自带的 http 模块,并且把它赋值给 ...
- EF6的多线程与分库架构设计实现
1.项目背景 这里简单介绍一下项目需求背景,之前公司的项目基于EF++Repository+UnitOfWork的框架设计的,其中涉及到的技术有RabbitMq消息队列,Autofac依赖注入等常用的 ...
- oracle_用户与概要文件
Oracle 用户与概要文件 2012-09-01 15:05:47| 分类: Oracle | 标签:用户与概要文件 |举报 |字号大中小 订阅 用户管理看上去简单其实也是最常出现问题的一个 ...
- Python自然语言处理学习笔记之评价(evaluationd)
对模型的评价是在test set上进行的,本文首先介绍测试集应该满足的特征,然后介绍四种评价方法. 一.测试集的选择 1.首先,测试集必须是严格独立于训练集的,否则评价结果一定很高,但是虚高,不适用于 ...