我有一个方法,我传递一个列表,然后在列表中进行排序。如何传递属性和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