我使用下面的類由type
成員對列表進行排序:如何合併兩個排序函數?
public class CameraSortByType : IComparer<Camera>
{
private bool asc;
public CameraSortByType(bool a)
{
this.asc = a;
}
public int Compare(Camera x, Camera y)
{
if (x.type > y.type)
return asc? -1 : 1;
if (x.type < y.type)
return asc? 1 : -1;
else
return 0;
}
}
我也name
排序相同的列表:
myList.Sort((s1, s2) => s2.name.CompareTo(s1.name));
我怎樣才能納入排序的名字進入按類型排序類?所以當我按類型排序時,它也按名稱排序?
更新:LINQ的版本
var primarySortResult = primarySort ? CameraStorage.CameraList.OrderBy(x => x.type) : CameraStorage.CameraList.OrderByDescending(x => x.type);
var secondarySortResult = secondarySort ? primarySortResult.ThenBy(x => x.name) : primarySortResult.ThenByDescending(x => x.name);
CameraStorage.CameraList = secondarySortResult.ToList();
是LINQ的一個選擇嗎? – 2013-03-19 11:52:33
好吧,如果它可以在我的'CameraSortByType'裏面,那就沒問題。 – Pablo 2013-03-19 11:53:32
不,我問了選項list.OrderBy(x => x.type).ThenBy(x => x.name)' – 2013-03-19 11:54:49