然而,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