LINQ Group Join 的简单应用

今天的论坛上看到一网友提出这样一个问题:


A表数据:
ID Content
1 内容哈哈哈哈

B表数据:
ID AID UserID
1 1 2012
2 1 2013
3 1 2014

我要的数据集是:
ID Content UserIDs
1 内容哈哈哈哈 2012,2013,2014


这样我想到可以用 LINQ的Group Join来解决:

 

//构造类
public class A
{
  public int ID{get;set;}
  public string Content{get;set;}
}

public class B
{
  public int ID{get;set;}
  public int AID{get;set;}
  public int UserID{get;set;}
}


 

//初始化数据:
	var listA=new List<A>(){new A{ ID=1, Content="aaaaaaaaaa"}};
	var listB=new List<B>()
	{
		new B{ ID=1, AID=1, UserID=2012},
		new B{ ID=2, AID=1, UserID=2013},
		new B{ ID=3, AID=1, UserID=2014},
	};


下边就是执行查询了:

//Group Join的Lamda表达式写法:
    var QueryWithLamda=listA.GroupJoin(listB,
						a=>a.ID,
						b=>b.AID,
						(a,t)=>new 
							{
								ID=a.ID,
								Content=a.Content,
								UserIDs=string.Join(",",t.Select(x=>x.UserID.ToString()).ToArray())
							});

 

//Group Join的标准表达式写法:
	var QueryWithStandard=from a in listA
	          join b in listB
			  on a.ID equals b.AID into t
			  select new 
				{
				    ID=a.ID,
					Content=a.Content,
					UserIDs=string.Join(",",t.Select(x=>x.UserID.ToString()).ToArray())
				};


最后:

 

QueryWithLamda 和QueryWithStandard 都是想要的结果.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值