然而,Load()不會創建任何東西,它只需要一堆項並將它們從底層源加載到上下文中。您不能在context.mytable上施加排序,因爲mytable不包含實際數據,它持有您將用於獲取實際數據的部分查詢。
要訂購您的用戶界面,您需要對您要綁定的列表進行排序,或者使用無序列表並將其包裝到其作業要應用排序的對象中。由於您使用的是本地版,請使用後者並使用CollectionViewSource。
下面是WPF中CollectionViewSource的一個示例。它綁定到我想要的順序顯示的無序列表DataContext的財產StateOrProvinces:
<UserControl.Resources>
<CollectionViewSource x:Key="stateOrProvinceViewSource" Source="{Binding Path=StateOrProvinces}" >
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
與供應鏈管理之中:
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
代碼同樣的事情:
CollectionViewSource orderedView = new CollectionViewSource()
{
Source = StateOrProvinces,
};
orderedView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
使用額外的層來應用排序有一些優點。它允許您在不同地點以不同順序顯示相同列表,並且可以從基礎列表中添加/刪除項目,而無需每次都手動應用排序。
你也應該看看CollectionView有一些額外的花裏胡哨的類,但我不會進入它,以減少信息過載。
您是否只需要按照特定順序在UI中顯示數據? – 2013-02-28 05:41:21
您能否給我們一些示例數據以向我們展示訂購問題? – IronMan84 2013-02-28 14:42:55
馬諾斯 - 是的。我使用Where子句和Order子句來獲取要顯示給用戶的數據。我在Where子句中遇到同樣的問題。 – user1626137 2013-02-28 15:17:42