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 ...
随机推荐
- UVa 11172 - Relational Operator
题目大意:给两个数,比较大小... #include <cstdio> int main() { int T; scanf("%d", &T); int a, ...
- systemd学习
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html http://www.ruanyifeng.com/blog ...
- Angular - - $anchorScroll、$controller、$document
$anchorScroll 根据HTML5的规则,当调用这个函数时,它检查当前的url的hash值并且滚动到相应的元素. 监听$location.hash()并且滚动到url指定的锚点的地方.可以通过 ...
- iOS 之 Block Variable
在某个变量前面加__block ,这个变量就变成了block variable.那么就可以在block里面修改该值.
- 2.11. 创建托管对象(Core Data 应用程序实践指南)
到现在为止,还没有创建过托管对象,回顾了一下,只是创建了托管对象模型,持久化存储区,持久化存储协调器,托管对象上下文. 那么,现在就来创建托管对象吧. 使用NSEntityDescription 的 ...
- Java获取异常堆栈信息
方法一: public static String getStackTrace(Throwable t) { StringWriter sw = new StringWriter(); PrintWr ...
- php 显示sqlserver二进制图片
<? header("Content-type:image/ "); // Server in the this format: \ or // , when using a ...
- 星级评分条(RatingBar)的功能和用法
星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星级评分条与拖动条的用法.功能都十分接近:它们都是允许用户通过拖动条来改变进度.RatingBar与SeekBar最大区别 ...
- 第一个Servlet程序及分析
第一个Servlet程序: package cc.openhome; import java.io.IOException; import java.io.PrintWriter; import ja ...
- Windows Server 2008 R2防火墙出站规则
出战规则指Windows Server 2008 R2系统访问外部的某台计算机通信数据流. 配置防火墙阻止Windows Server 2008 R2系统通过IE软件访问外部的网站服务器,阻止Wind ...