2013-03-19 57 views
4

我想列出一个清单,重新排列它并替换原来的。如何进行内联排序?

有没有更好的方法来做到这一点?目前,我重新分配它,感觉很傻...

这里是我的代码:

var viewModel = new ViewModel(); 
viewModel.Children = viewModel.Children.OrderBy(x => x.Name).ToList(); 

回答

13

看来你正在寻找List<T>.Sort方法。

viewModel.Children.Sort((a, b) => string.Compare(a.Name, b.Name)); 
+1

我想这不会为一个IList工作? – shenku 2013-03-19 08:24:03

+0

不,它不会工作,但你总是可以使用'.ToList()'。 – 2013-03-19 08:25:14

+0

yea谢谢,很害怕那个。 – shenku 2013-03-19 08:26:31

1

尝试用List<T>.Sort方法代替。

用指定 System.Comparison<T>在整个List<T>的元素。

viewModel.Children.Sort((a, b) => String.Compare(a.Name, b.Name)) 
0

试试这个使用lambda expressions

viewModel.Children.Sort((a, b) => String.Compare(a.Name, b.Name)) 

对于IList的,它不会工作:

viewModel.Children = viewModel.Children.OrderBy(x => x.Name).ToList(); 
+1

'(a)=> String.Compare(a.Name)'< - 不知道它甚至会编译。 – leppie 2013-03-19 08:29:33

+0

哎呀..现在,我更新了.. – 2013-03-19 08:30:36