-1

我有一个类似于下面的表格:

Data {
    id varchar(50),
    pId uniqueidentifier ,
    fId uniqueidentifier ,
    xid uniqueidentifier,
    flag smallint 
}

该表包含很多重复行,因为 pId 和 fId 是 1:n 关系,fId 到 xId 也是 1:n 关系。

我想查询这个表并填充一个obj,如下所示:

class P
{
    Guid id;
    List<F> fList; 
}

class F
{
    Guid id;
    List<X> xList; 
}


class X
{
    Guid id;
    byte flag; 
}

我正在学习Linq。任何使用 Linq 从表中填充类 P 的解决方案都会有所帮助。

谢谢!

4

1 回答 1

2

此查询将返回IEnumerable<P>(不确定转换smallintboolean但其他东西应该可以)

var query = from p in context.Data
            group p by p.pId into gp
            select new P()
            {
                id = gp.Key,
                fList = (from f in gp
                         group f by f.fId into gf
                         select new F()
                         {
                             id = gf.Key,
                             xList = gf.Select(x => new X() { id = x.xid, 
                                                              flag = x.flag })
                                       .ToList()
                         }).ToList()
            };

评论:

gp将包含与某个 pId 对应的所有行,换句话说 - 它返回与 pId 相关的所有 fId。

gf将包含先前结果中与某些 fId 相关的所有行(即与 fId 相关的所有 xid)

于 2012-11-20T16:42:10.797 回答