今天的論壇上看到一網友提出這樣一個問題:
A表資料:ID Content1 內容哈哈哈哈B表資料:ID AID UserID1 1 20122 1 20133 1 2014我要的資料集是:ID Content UserIDs1 內容哈哈哈哈 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 都是想要的結果.