Linq GroupJoin 使用
备忘:
var data = BoshccEntities.Current.TB_MB_1
.GroupJoin(BoshccEntities.Current.TB_MB_2, o => o.HospitalID, m => m.MemberID, (t, m) => new { t, m })
.GroupJoin(BoshccEntities.Current.TB_CM_3, o => o.t.ServiceCode, s => s.DicNum, (o, s) => new { t = o.t, m = o.m, s })
.GroupJoin(BoshccEntities.Current.TB_CM_3, o => o.t.PaymentMethodCode, p => p.DicNum, (o, p) => new { t = o.t, m = o.m, s = o.s, p })
.Where(o =>
(isenable.HasValue ? o.t.IsEnable == isenable.Value : true)
&& (hasHospital ? hospitalIDs.Contains(o.t.HospitalID) : true)
&& (hasService ? o.t.ServiceCode == service : true)
&& (hasPayment ? o.t.PaymentMethodCode == payment : true))
.OrderBy(o => o.t.ID)
.Select(o => new
{
ID = o.t.ID,
HospitalID = o.t.HospitalID,
ServiceCode = o.t.ServiceCode,
PaymentMethodCode = o.t.PaymentMethodCode,
IsEnable = o.t.IsEnable,
Remark = o.t.Remark, Hospital = o.m.FirstOrDefault(), //关键1
Service = o.s.FirstOrDefault(),
Payment = o.p.FirstOrDefault()
})
.ToList() //关键2
.Select(o => new TB_MB_4
{
ID = o.ID,
HospitalID = o.HospitalID,
ServiceCode = o.ServiceCode,
PaymentMethodCode = o.PaymentMethodCode,
IsEnable = o.IsEnable,
Remark = o.Remark, HospitalName = o.Hospital == null ? "" : o.Hospital.HospitalName, //关键3
ServiceName = o.Service == null ? "" : o.Service.DicName,
PaymentName = o.Payment == null ? "" : o.Payment.DicName
});
Linq GroupJoin 使用的更多相关文章
- Linq GroupJoin
static void Main(string[] args) { List<Person> persons = new List<Person> { }, }, }; Lis ...
- Linq GroupJoin , Join
static void Main(string[] args) { List<Person> persons = new List<Person> { }, }, }; Lis ...
- LINQ查询操作符之Select、Where、OrderBy、OrderByDescending、GroupBy、Join、GroupJoin及其对应的查询语法
介绍 ·Select - Select选择:延迟 ·Where - Where查询:延迟 ·OrderBy - 按指定表达式对集合正序排序:延迟 ·OrderByDescend ...
- LINQ标准查询操作符(二)——Join、GroupJoin、GroupBy、Concat、
四.联接操作符 联接是指将一个数据源对象与另一个数据源对象进行关联或者联合的操作.这两个数据源对象通过一个共同的值或者属性进行关联. LINQ有两个联接操作符:Join和GroupJoin. 1. J ...
- [C#] LINQ之Join与GroupJoin
声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢! 一.编写Person与City类,如下: class Person { public int CityID { set; get; } ...
- Linq分组操作之GroupBy,GroupJoin扩展方法源码分析
Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var ...
- LINQ之 Join 与 GroupJoin
声明:本文为www.cnc6.cn原创,转载时请注明出处,谢谢! 一.编写Person与City类,如下: class Person { public int CityID { set; get; } ...
- [C#] LINQ之SelectMany和GroupJoin
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Linq in GroupBy GroupJoin
还是上一份的代码例子: public class Person { public int ID { get; set; } public string Name { get; set; } publi ...
随机推荐
- 新闻滚动marquee标签
先上代码: <marquee behavior="" direction="up" onMouseOver="this.stop()" ...
- HTML与CSS入门——第十三章 使用框架
知识点: 1.建立框架集的方法 2.在框架和窗口之间链接的方法 3.使用内联框架的方法 13.1 什么是框架: 框架是浏览器窗口中的一个矩形区域,每个框架显示的是一个完整的页面. 作者不建议使用框架, ...
- 在mac平台运行debug.exe
最近准备学习操作系统,想先复习一下汇编语言.因为用的是mac,而看的汇编教材(<汇编语言>王爽)使用到DOS下的debug,在网上搜了一圈发现,mac 也可以模拟运行debug. 先到网上 ...
- BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 算法讨论: 1.可以用最大流做,最大流等于最小割. 2.可以把这个图转化其对偶图,然 ...
- CODEVS 3137 栈练习1
3137 栈练习1 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定一个栈(初始为空,元素类型为整数,且小于等于100),只 ...
- android 开发中判断网络是否连接的代码
在android的开发中,尤其是与访问网络有关的开发,都要判断一下手机是否连接上了网络,下面是一个判断是否连接网络的嗲吗片段: package cn.com.karl.util; import com ...
- Java消息服务
什么是消息? 消息是可编程实现两端通信的机制.通常的一些消息技术如:TCP/IP Sockets.管道.文件.共享存储. Java消息服务 Java消息服务,即Java Message Service ...
- 文成小盆友python-num2 数据类型、列表、字典
一.先聊下python的运行过程 计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程.这个过程分成两类,第一种是 ...
- 逃离迷宫(HDU 1728 BFS)
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- js 对url字符转译全解
1.js 对url进行字符解码设计到3个方法 escape , encodeURI , encodeURIComponent eg: var url='http://baidu.com';encode ...