LINQ - 返回列表中的列表

时间:2015-04-07 17:38:23

标签: c# linq

我已将我的数据库导入到我的EF模型中,并且我尝试创建一个返回相应ViewModel的linq查询。

Items 反映 ItemDetailVM

Property 反映 PropertyVM

Items Property 之间有一个导航属性

我试图写的linq查询在...

之下

我的问题是如何在 ItemDetailVM 中映射 prop

var query = (from items in DbContext.Items
         select new ItemDetailVM
         {
            item1 = items.id,
            item2 = items.value,
            //prop = CODE HERE... select new PropertyVM{ ....}
         }).ToList();


class ItemDetailVM
{
    string item1;
    string item2;
    List<Property> prop;
}

class PropertyVM
{
    string prop1;
    string prop2;
    string prop3;
}

1 个答案:

答案 0 :(得分:2)

试试这个:

var query = (from items in DbContext.Items
             select new ItemDetailVM
             {
               item1 = items.id,
               item2 = items.value,
               prop = items.prop.Select(p=>new PropertyVM{prop1=p.prop1,
                                                          prop2=p.prop2, 
                                                          prop3=p.prop3}).ToList()
             }).ToList();

如果您已停用延迟加载,则需要调用Include扩展名方法:

var query = (from items in DbContext.Items.Include(i=>i.prop)
             select new ItemDetailVM
             {
               item1 = items.id,
               item2 = items.value,
               prop = items.prop.Select(p=>new PropertyVM{prop1=p.prop1,
                                                          prop2=p.prop2, 
                                                          prop3=p.prop3}).ToList()
             }).ToList();