linq只在c#中获得递归列表中的一个级别

时间:2016-07-28 13:03:06

标签: c# linq

希望能够提取递归列表的前2个级别。

InventoryTypeId int

输入nvarchar(50)

ParentId int

public IEnumerable<inventoryTypeModel> getInventoryTypes()
{
    var _type = from d in dbgpsContext.InventoryType
                 where d.ParentId==null
                select new inventoryTypeModel
                {
                    typeid = d.InventoryTypeId  ,
                    type = d.Type,
                    subtypes=???//no sure what goes here
                };

    return _type.ToList(); 
}

2 个答案:

答案 0 :(得分:0)

这样的事情应该是神奇的:

public IEnumerable<inventoryTypeModel> getInventoryTypes()
{
    var _type = from d in dbgpsContext.InventoryType
                 where d.ParentId==null
                select new inventoryTypeModel
                {
                    typeid = d.InventoryTypeId  ,
                    type = d.Type,
                    subtypes= from s in d
                              where ParentId == d.Id
                              select s.Type
                };

    return _type.ToList(); 
}

希望这有帮助,因为我不确切知道你的模型是如何相关的。

答案 1 :(得分:0)

这是LINQ方法链版本

public IEnumerable<inventoryTypeModel> getInventoryTypes()
{

 var _type = dbgpsContext.InventoryType.Where(d=> d.ParentId == null).Select(b => new
              {
                Typeid = b.InventoryTypeId  ,
                Type = b.Type,
                Subtypes = dbgpsContext.InventoryType.Where(v=> v.ParentId == b.Id).Select(c => c.Type)
                }).ToList();

 return _type; 
}