2012-10-23 22 views
1

我有一個問題。我想分頁ClassA如何在EF中爲子對象分頁數據?

ClassA具有類型ClassB的元素的列表,並且ClassB具有ClassC類型的元素的列表。

如何通過ClassC中的元素數來分頁數據?

public class ClassA 
{ 
    public ICollection<ClassB> ClassBCollection { get; set; } 
} 

public class ClassB 
{ 
    public ICollection<ClassA> ClassACollection { get; set; } 

    public ICollection<ClassC> ClassCCollection { get; set; } 
} 

public class ClassC 
{ 
    public ICollection<ClassB> ClassBCollection { get; set; } 
} 

ClassA的   | Class B   | Class C
Data1 | InnerData | InnerInnerData1
                    |                                       | InnerInnerData2
                    |                                       | InnerInnerData3
                    |                                       | InnerInnerData4
                    |                                       | InnerInnerData5(在此處分頁)

在此先感謝。

+0

你的代碼是否正常?在B類中有C類集合。還有在C類中的B類集合,這是一個永無止境的圓圈? –

+0

是的。這是正確的,EF以這種方式解決了多對多的關係。 –

回答

0

添加了一個方法,我可以System.Linq.Queryable 這樣的解決方案解決:

var result = from A in DataContext<A>() 
       .Include(x => x.B) 
       .Include(x => x.B.C) 
       .Orderby(x => x.C) 
       .ThenBy(x => x.B) 
       .ThenBy(x => x.A) 
       .Skip(pageNumber * pageSize) 
       .Take(pageSize); 

這是所有鄉親!:)

0

可以在B類GetPageRange()

public ICollection<ClassC> GetPageRange(int startingPage, int pagesPerPage) 
    { 
     return (from c in ClassCCollection 
       select c).Skip(startingPage).Take(pagesPerPage).ToList(); 
    }