首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

linq如何写,1对多关系

2012-09-15 
linq怎么写,1对多关系主表A: ID,Content从表B:ID,AID,UserID1对多关系我要获取这样的数据集ID,Content,Use

linq怎么写,1对多关系
主表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())                }); 

热点排行