【发布时间】:2012-03-16 17:24:56
【问题描述】:
我有一个这样的对象模型
public class Parent{
public int Id;
public string Name;
public Child Sibling
}
public class Sibling {
public int Id;
public string Name;
public Cousin Cousin
}
public class Cousin{
public int Id;
public string Name;
public DateTime CreatedDate;
}
我正在尝试展平或投影?像这样的模型
public class ViewModelSibling {
public int Id;
public string Name;
}
public class ViewModel{
public int ParentId;
public string ParentName;
public ViewModelSibling Sibling;
public ViewModelSibling Cousin;
public DateTime? CousinCreatedDate;
}
其中兄弟和表亲可以为空
控制器代码
[HttpPost]
public virtual ActionResult GetGridItems()
{
IQueryable<Parent> parents = GetParentsWhereCriteriaMet();
var data = parents.Select( p => new ViewModel{
ParentId = p.Id,
ParentName = p.Name,
Sibling = new ViewModelSibling { Id = p.Sibling.Id, Name = p.Sibling.Name},// if p.Sibling is null and exception is thrown
Cousin= new ViewModelSibling {Id =p.Sibling.Cousin.Id, Name = p.Sibling.Cousin.Name}// if p.Sibling or p.Sibling.Cousin are null and exception is thrown
CousinCreatedDate = p.Sibling.Cousin.CreatedDate
} )
return new JsonResult { Data = data };
}
我试图避免使用 ToList(),因为我不希望返回所有父记录。 ViewModel 将使用 Ajax 绑定到 Telerik Grid,这将处理分页。 我不想使用 AutoMapper,因为我不想返回所有字段和记录。
如何在不使用 ToList() 的情况下展平此模型?
【问题讨论】:
-
我用一个问题更新了帖子。但简而言之。如果 p.Sibling 或 p.Sibling.Cousin 为 null 并且抛出异常。如何在不使用 ToList 或循环遍历整个结果集的情况下避免这种情况?
标签: asp.net-mvc linq entity-framework automapper flatten