如何在ASP.NET MVC中处理分层查询及其数据显示?
假设我有一些模型,看起来像这样: (附加属性)
public class Parent {
public int ParentId {get; set;}
public virtual ICollection<ChildLvlOne> ChildsLvl1 {get; set;}
}
public class ChildLvlOne {
public int ChildLvlOneId {get; set;}
public virtual Parent Parent {get; set;}
public virtual ICollection<ChildLvlTwo> ChildsLvl2 {get; set;}
}
public class ChildLvlTwo {
public int ChildLvlTwoId {get; set;}
public ChildLvlOne ChildLvlOne {get; set;}
public virtual ICollection<SomeOtherObject> SomeOtherObjects {get; set;}
}
现在我想显示来自 Parent 的数据以及来自两个级别的子项的数据,但来自 ChildLvlTwo 的数据必须以不同的方式显示,具体取决于它相关的 SomeOtherObjects 。
所以,我的第一个想法是,为 ChildLvlTwo 创建一个新的ViewModel并在那里添加一个属性,它决定了它必须显示的方式。 但要做到这一点,我还必须为 ChildLvlOne 和 Parent 创建一个新的ViewModel,并在查询中创建一个非常庞大的select语句。
对于这样的问题有没有好的解决方案?
答案 0 :(得分:0)
我想你想要如何显示孩子们的数据很重要。这样的事情会起作用吗?
from p in Parent
select new
{
Parent = p,
Child =
{
ChildLvl1.ChildsLvl2.Select(l2 => ChildLv2.ChildLvlTwoId).ToList().Contains(1) ? "Format1" :
ChildLvl1.ChildsLvl2.Select(l2 => ChildLv2.ChildLvlTwoId).ToList().Contains(2) ? "Format2" :
ChildLvl1.ChildsLvl2.Select(l2 => ChildLv2.ChildLvlTwoId).ToList().Contains(3) ? "Format3" : "Format4"
}
};