好時候,所以我有一些方法,看起來像這樣避免重複的代碼 - 它通過藝術家,專輯,年份等使用LINQ
public void SortByAlbum(SortOrder sortOrder)
{
if (sortOrder == SortOrder.Ascending)
_list = _list.OrderBy(x => x.Album).ToList();
else if (sortOrder == SortOrder.Descending)
_list = _list.OrderByDescending(x => x.Album).ToList();
}
這個排序列表:
public void SortByArtist(SortOrder sortOrder)
{
if (sortOrder == SortOrder.Ascending)
_list = _list.OrderBy(x => x.Artist).ToList();
else if (sortOrder == SortOrder.Descending)
_list = _list.OrderByDescending(x => x.Artist).ToList();
}
現在顯然這是不好的代碼,所以它需要重構成一個Sort()方法,但我不知道如何以最簡單的方式來完成它。我不在乎它是否使用IComparer或LINQ。
我希望它看起來是這樣的:
public void Sort(SortOrder sortOrder, SortType sortType)
{
//implementation here
}
public enum SortType
{
Artist,
Album,
Year
}
所以什麼沒有代碼重複做這個最乾淨的方式是什麼?
感謝,李
另外,如果你出於某種原因,不想在調用`Sort`時寫下明確的lambda表達式, d get big),你可以用預定義的`Func`對象(相當於示例中的enum)創建某種列表。 –
2009-01-27 22:31:22