主表A: ID,Content
从表B:ID,AID,UserID
1对多关系
我要获取这样的数据集
ID,Content,UserIDs
没有外键关联哈。
A.GroupJoin(B, a => a.ID, b => b.AID, (a, b) => new { a, UserID = b.Max(o => o.UserID) })
这样只能获取从表里对应的第一个UserID呢。
我要获取ID1,ID2,ID3的形式,谢谢帮忙
------解决方案--------------------------------------------------------
这是asp.net
请去linq
------解决方案--------------------------------------------------------
- C# code
void Main(){ 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}, }; var query=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()) }; }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;}}
------解决方案--------------------------------------------------------
当然,如果你喜欢用lamda表达式,也可以这么写:
- C# code
var query=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()) });