我有一個方法,我傳遞一個列表,然後在列表中進行排序。如何傳遞屬性和sortorder作爲排序列表的參數方法
類型ChartItemData
包括如Average
,ProportionHighScore
和ProportionLowScore
的屬性。根據方法的使用情況,我需要在不同屬性的方法內對列表進行排序,以及升序或降序。
如何在參數列表中指定要排序的屬性以及要使用的排序順序?
我想我可以設置SortDirection的Enum,但我仍然需要找出如何傳遞屬性進行排序。這裏有一些僞代碼來說明我在使用List.OrderBy之後。如果這樣做更有意義,我也可以使用List.Sort方法對列表進行排序。
public enum SortDirection { Ascending, Descending }
public void myMethod(List<ChartItemData> myList, "parameter propertyToSortOn",
SortDirection direction)
{
if (direction == SortDirection.Ascending)
var sorted = ChartData.OrderBy(x => x."propertyToSortOn").ToList();
else
var sorted = ChartData.OrderByDescending(x => x."propertyToSortOn").ToList();
}
嘗試使用反射基於字符串傳遞,以獲得正確的屬性:https://msdn.microsoft.com/en- us/library/kz0a8sxy(v = vs.110).aspx –
你可以定義你自己的比較器,看這個鏈接:http://stackoverflow.com/questions/12753762/linq-syntax-for-orderby-with-custom- comparert – Aliz