2013-03-19 54 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