很遗憾,OrderBy 扩展方法不对集合进行排序,而是返回一个 IOrderdEnumerable,所以要处理这个问题,您应该执行以下操作
DestMenu = new ObservableCollection<MenuModel>(DestMenu.OrderBy(o=>o.MenuName));
当然,使用 ObservableCollection 您需要在视图上更新项目,而当您使用这种排序方法时,这实际上不会发生,因为 ObservableCollection 会更新视图上的项目,因为它会触发 CollectionChanged 事件,但实际上我们已经更改了 Collection 本身,而不是收集,所以如果您执行以下操作会很好
public YourClass : INotifyPropertyChanged
{
void YourMethod()
{
DestMenu = new ObservableCollection<MenuModel>(DestMenu.OrderBy(o=>o.MenuName));
RaisePropertyChanged("DestMenu");
}
event PropertyChangedEventHandler PropertyChanged;
void RaisePropertyChanged(string PropertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(PropertyName));
}
}