C# Linq的多表join操作 空操作
来源:互联网 发布:汉诺塔非递归算法 php 编辑:程序博客网 时间:2024/06/17 06:57
DataSet dsOperator = GetAllOperatorInfo_ds(); DataTable dtOperator = dsOperator.Tables[0]; var query1 = from rPerm in dtPERMISSION.AsEnumerable() join rOpera in dtOperator.AsEnumerable() on rPerm.Field<string>("openerName") equals rOpera.Field<Int32>("Id").ToString() into newTable from aa in newTable.DefaultIfEmpty() join rOpera2 in dtOperator.AsEnumerable() on rPerm.Field<string>("closeName") equals rOpera2.Field<Int32>("Id").ToString() into newTable2 from bb in newTable2.DefaultIfEmpty() select new { qyid = rPerm.Field<String>("qyid"), openerName = (aa==null || string.IsNullOrEmpty(aa.Field<String>("UserName"))) ? "" : aa.Field<String>("UserName"), closeName = (bb==null || string.IsNullOrEmpty(bb.Field<String>("UserName"))) ? "" : bb.Field<String>("UserName") }; DataTable dt = dtPERMISSION.Clone(); dt.Columns.Add("check", System.Type.GetType("System.Boolean")); foreach (var obj in query1) { dt.Rows.Add(obj.qyid, obj.openerName, obj.closeName, flg); }
DefaultIfEmpty操作符,它能够为实序列提供一个默认的元素。DefaultIfEmpty使用了泛型中的default关键字。default关键字对于引用类型将返回null,而对于值类型则返回0。对于结构体类型,则会根据其成员类型将它们相应地初始化为null(引用类型)或0(值类型
bb==null || string.IsNullOrEmpty(bb.Field<String>("UserName")判断左连接的对象是否为空,否则直接赋值会报错
foreach (var obj in query1) { dt.Rows.Add(obj.qyid, obj.openerName, obj.closeName, flg); }
LINQ查询后的对象,用了NEW不能直接用CopyToDataTable(),所以用FOR循环赋值。
项目中用到的小技巧,以此记录。
阅读全文
0 0
- C# Linq的多表join操作 空操作
- C# 中Linq的多对象join操作
- Linq之Join操作
- Linq的Group和Join操作
- c# Linq操作DataTable
- LINQ to OBJECT语句之Join操作符的使用
- c# linq to sql 的基本操作
- C# 模拟数据的join操作 转载
- Spark的Dataset操作(五)-多表操作 join
- C# 中 Linq 操作 DataTable
- C# LINQ查询操作符
- LinQ的级联操作
- Linq的Set操作
- XML的LINQ操作
- linq 的简单操作
- linq 的简单操作
- Linq的基本操作
- Spark 实践 - RDD 的 join操作之需要注意的事项 - RDD为空的join操作
- git pull/push时提示输入账号密码之免除设置
- ThinkPHP之__construct()和__initialize()
- 国际顶级期刊Nature Communications发表腾讯AI Lab、美WUSTL大学及加UBC大学AI+医疗合作研究成果
- MongoDB入门教程(适合小白)
- 关于java中克隆问题,朦朦胧胧
- C# Linq的多表join操作 空操作
- 冒泡排序
- vue子组件向父组件传值问题
- 一键安装Maven/Ant (使用Yum)
- OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++一、虚拟机环境准备篇
- 【观察】All By Partner,浪潮云最大化释放生态之力
- Split Linked List in Parts
- adb 启动应用
- 3dMax 骨骼动画导入到Unity