_ctx.DataContext.Set<ParentClass>().Include("ChildCollection").OrderBy(...)
每次我把排序依據子句中Lambda表達式我無法訪問性能斷ChildCollection屬性,我希望底層的子集合被排序。我不想讓父類按任何特定列排序。
如何使用LINQ/Lambda表達式實現此目的?似乎它應該很容易!
_ctx.DataContext.Set<ParentClass>().Include("ChildCollection").OrderBy(...)
每次我把排序依據子句中Lambda表達式我無法訪問性能斷ChildCollection屬性,我希望底層的子集合被排序。我不想讓父類按任何特定列排序。
如何使用LINQ/Lambda表達式實現此目的?似乎它應該很容易!
預先加載無法訂購導航屬性。您必須使用這樣的事情:
var query = _ctx.DataContext
.Set<ParentClass>()
.Select(p => new
{
Parent = p,
Childs = p.ChildCollection.OrderBy(c => c.Something)
});
的
嗨,我有你的例子解決方案的大問題。 1)我需要從我的存儲庫中返回一個非匿名類型。 2)底層集合是IList類型的,因此當從IOrderedEnumerable轉換時似乎會陷入困境。爲此奮鬥...... – jaffa 2011-03-30 14:24:06
在這種情況下,您必須定義新類型,因爲我知道投影不能填充實體類型。 – 2011-03-30 14:26:05
是有序的enumerable不能放在列表中。您必須在自定義類型中具有「IOrderedEnumerable」屬性。 – 2011-03-30 16:28:54
可能重複([如何與實體與ADO.NET實體框架預先加載排序] http://stackoverflow.com/questions/996438/how-to-sort相關的實體與熱切加載在ado網絡實體框架) – 2011-03-30 19:07:24