【发布时间】:2014-05-07 00:25:57
【问题描述】:
我有多个视图模型类,它们使用 Linq 从数据库中获取数据(DBContext 类具有类似的结构,但具有更多字段)
我缺乏从一个类对象获取数据的知识,因为它包含在一个没有相应 db 对象的包装类中。
提前感谢您对此提供的任何帮助或建议。
以下是类结构:
public class TopLevelViewModel
{
public TopLevelID { get; set; }
public TopLevelTitle { get; set; }
public List<SecondLevelViewModel> SeconLevel { set; get; }
public TopLevelViewModel()
{
Inner = new List<SecondLevelViewModel>();
}
}
public class SecondLevelViewModel
{
public SecondLevelID { get; set; }
public SecondLevelTitle { get; set; }
public TopLevelID { get; set; }
public WrapperViewModel { get; set; }
}
public class InnerViewModel
{
public InnerID { get; set; }
public InnerTitle { get; set; }
public SecondLevelID { get; set; }
}
public class WrapperViewModel
{
public List<InnerViewModel> Inner { set; get; }
public WrapperViewModel()
{
Inner = new List<InnerViewModel>();
}
}
Linq 查询获取上述 db 对象的数据:
List<TopLevelViewModel> data = null;
data = db.TopLevel.Where(t => t.TopLevelID == URLTopLevelID)
.Select(t => new TopLevelViewModel()
{
TopLevelID = t.TopLevelID,
TopLevelTitle = t.TopLevelTitle,
SeconLevel = db.SecondLevel.Where(s => s.TopLevelID == t.TopLevelID)
.Select(s => new SecondLevelViewModel()
{
SecondLevelID = s.SecondLevelID,
SeconLevelTitle = s.SeconLevelTitle,
WrapperViewModel = ???
}).ToList<SecondLevelViewModel>()
}).ToList < TopLevelViewModel();
查询获取内部对象数据:
db.Inner.Where(i => i.SecondLevelID == s.SecondLevelID)
.Select(i => new InnerViewModel()
{
InnerID = i.InnerID,
InnerTitle = i.InnerTitle
}).ToList<InnerViewModel>()
问题:如何将上述内部查询合并为WrapperViewModel 类的一部分,并将其作为单个查询包含在主 Linq 查询中?
WrapperViewModel 没有 DB 对象,但它是InnerViewModel 类的一种包装类。
【问题讨论】:
标签: linq linq-to-entities asp.net-mvc-5