2014-02-16 11 views
0

如何處理ASP.NET MVC中的分層查詢和數據顯示?如何在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;} 
} 

,現在我想從家長在這兩個級別從兒童的數據組合顯示的數據,但ChildLvlTwo的數據必須以不同方式顯示,具體取決於其相關的SomeOtherObjects

所以,我的第一個想法是,爲ChildLvlTwo創建一個新的ViewModel,並在那裏添加一個屬性,它決定了它的顯示方式。 但要做到這一點,我將不得不爲ChildLvlOne父母創建一個新的ViewModel,並在查詢中創建一個真正巨大的select語句。

有沒有像這樣的問題的任何好的解決方案?

回答

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" 
    } 
};