【发布时间】:2009-01-27 22:16:24
【问题描述】:
好的,所以我有一些看起来像这样的方法:- 按艺术家、专辑、年份等对列表进行排序。
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
}
那么在不重复代码的情况下,最简洁的方法是什么?
谢谢,李
【问题讨论】:
标签: c# .net linq refactoring