相對於System.Linq的OrderBy及OrderByDescending方法,調用後產生IOrderedEnumberable對象,這個對象爲排序後的返回值,但原對象未發生變化。算法
試想,有這種需求,ObservableCollection調用排序方法後,此對象也跟着排序,怎麼作呢?只能本身寫個擴展方法了,方法內使用的冒泡排序算法,很是簡單,固然使用是更簡單、方便了。ide
注意:將方法寫爲擴展方法更方便:spa
class Student對象
{排序
int id;ip
string name;string
}io
ObservableCollection listDatas=new ObservableCollection<Student>();class
listData .Add(new Student(){id=2,name="xiaoming"}; 擴展
listData.Add(new Student(){id=1,name="李華"};
listData.Add(new Student(){id=3,name="張度"};
listDatas.OrderBy(cu=>cu.id,true);//按ID升序排序
listDatas.OrderBy(cu=>cu.id,false);//按ID降序排序
listDatas.OrderBy(cu=>cu.name,false);//按名稱升序排序
listDatas..ThenBy(x => x.name)//按名稱升序排序 (只有ID相同的狀況下,按name升序排序)