博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq join right join left join
阅读量:7024 次
发布时间:2019-06-28

本文共 6122 字,大约阅读时间需要 20 分钟。

代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Reflection;namespace TestConsole{    public class Program    {        public static void Main(string[] args)        {            var classify_list = new List
{ new Alliance_FAQ_Classify{ClassifyID =1,ClassifyName ="酒店"}, new Alliance_FAQ_Classify{ClassifyID =2,ClassifyName ="机票"}, new Alliance_FAQ_Classify{ClassifyID =3,ClassifyName ="团购"}, new Alliance_FAQ_Classify{ClassifyID =5,ClassifyName ="旅游"}, new Alliance_FAQ_Classify{ClassifyID =8,ClassifyName ="Other"} }; var info_list = new List
{ new Alliance_FAQ_Info{FAQID =1,ClassifyID =1}, new Alliance_FAQ_Info{FAQID =2,ClassifyID =1}, new Alliance_FAQ_Info{FAQID =3,ClassifyID =1}, new Alliance_FAQ_Info{FAQID =4,ClassifyID =1}, new Alliance_FAQ_Info{FAQID =5,ClassifyID =1}, new Alliance_FAQ_Info{FAQID =6,ClassifyID =1}, new Alliance_FAQ_Info{FAQID =7,ClassifyID =2}, new Alliance_FAQ_Info{FAQID =8,ClassifyID =2}, new Alliance_FAQ_Info{FAQID =9,ClassifyID =2}, new Alliance_FAQ_Info{FAQID =10,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =11,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =12,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =13,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =14,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =15,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =16,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =17,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =18,ClassifyID =3}, new Alliance_FAQ_Info{FAQID =19,ClassifyID =5}, new Alliance_FAQ_Info{FAQID =22,ClassifyID =5} }; var info_group = from a in info_list group a by a.ClassifyID into g select new { ClassifyID=g.Key, TotalCount=g.Count() }; foreach (var g in info_group) { Console.WriteLine("ClassifyID:" + g.ClassifyID + " TotalCount:" + g.TotalCount); } Console.WriteLine("================================================="); Console.WriteLine("Left Join:"); var left_list = from a in info_group join b in classify_list on a.ClassifyID equals b.ClassifyID into joinData from c in joinData.DefaultIfEmpty() select new { c.ClassifyID, Count = a != null ? a.TotalCount : 0, c.ClassifyName }; foreach (var l in left_list) { Console.WriteLine("ClassifyID:" + l.ClassifyID + " Count:" + l.Count + " ClassifyName:" + l.ClassifyName); } Console.WriteLine("================================================="); Console.WriteLine("Right Join:"); var right_list = from a in classify_list join b in info_group on a.ClassifyID equals b.ClassifyID into joinData from c in joinData.DefaultIfEmpty() select new { a.ClassifyID, Count = c != null ? c.TotalCount : 0, a.ClassifyName }; foreach (var r in right_list) { Console.WriteLine("ClassifyID:" + r.ClassifyID + " Count:" + r.Count + " ClassifyName:" + r.ClassifyName); } Console.ReadLine(); } } public class Alliance_FAQ_Info { public int FAQID { get; set; } public int ClassifyID { get; set; } } public class Alliance_FAQ_Classify { public int ClassifyID { get; set; } public string ClassifyName { get; set; } }}

 可以发现第一个就是满表

http://www.cnblogs.com/redmondfan/archive/2013/08/23/3276811.html

http://www.cnblogs.com/shenqiboy/p/3260105.html

 

DataTable dtA = new DataTable();            dtA.Columns.Add("id", typeof(int));            dtA.Columns.Add("price", typeof(string));            dtA.Rows.Add(1, "100");            dtA.Rows.Add(2, "100");            DataTable dtB = dtA.Clone();            dtB.Rows.Add(1, "100");            dtB.Rows.Add(3, "100");            DataTable dtC = dtA.Clone();            dtC.Columns.Add("price_excel");            var leftData = from a in dtA.AsEnumerable()                           join b in dtB.AsEnumerable()                           on a.Field
("id") equals b.Field
("id") into g from b in g.DefaultIfEmpty() select new { id = a.Field
("id"), price = a.Field
("price"), price_excel = b == null ? "Null" : b.Field
("price") }; var rightData = from b in dtB.AsEnumerable() where !dtA.AsEnumerable().Select(a => a.Field
("id")).Contains(b.Field
("id")) select new { id = b.Field
("id"), price = "Null", price_excel = b.Field
("price") }; var fullJoinData = leftData.Union(rightData); fullJoinData.ToList().ForEach(q => dtC.Rows.Add(q.id, q.price, q.price_excel)); for(var i=0;i

 full join

http://blog.csdn.net/q107770540/article/details/7282005

 

你可能感兴趣的文章
Hadoop学习--fsimage镜像文件--day04
查看>>
IPv6系列-初学者的10个常见困扰
查看>>
通过QEMU-GuestAgent实现从外部注入写文件到KVM虚拟机内部
查看>>
linux ip配置
查看>>
Exchange 2016之启动Exchange EAC 性能控制台界面
查看>>
【Android开发】如何实现android和服务器长连接呢?推送消息的原理
查看>>
OpenCV 1.0 在VS2005中编译为静态库所需的设置
查看>>
oracle数据库表空间及权限调整示例
查看>>
漏桶算法 Leaky Bucket (令牌桶算法 Token Bucket)学习笔记
查看>>
ext struts2 上传细节
查看>>
Linux shell getopts 学习
查看>>
容易忘记的linux命令之chattr lsattr 设置隐藏权限与特殊权限的设置
查看>>
我的友情链接
查看>>
js动态增加删除ul节点li
查看>>
[Thinking in Java]之控制执行(Controling Execution)(三)
查看>>
mysql数据库详解
查看>>
keepalived(续一)
查看>>
nagios
查看>>
C++可变参数模板(variadic template)详细介绍及代码举例
查看>>
CentOS 7.4 Tengine安装配置详解(六)
查看>>