【发布时间】:2014-12-20 17:36:02
【问题描述】:
我有一个自定义排序,用于对列表进行排序,效果很好
public static void Sort<T>(ref List<T> list, string propertyName, SortDirection direction)
{
var comparer = new CustomComparer();
list = direction == SortDirection.Ascending
? list.OrderBy(x => x.GetType().GetProperty(propertyName).GetValue(x, null)).ToList()
: list.OrderByDescending(x => x.GetType().GetProperty(propertyName).GetValue(x, null)).ToList();
}
现在我正在尝试将 CustomComparer 添加到组合中,但在扩展方法时出现错误。
方法 'IOrderedEnumerable 的类型参数 System.Linq.Enumerable.OrderBy(这个 IEnumerable、Func、IComparer)' 不能 从用法推断。尝试明确指定类型参数。
public static void Sort<T>(ref List<T> list, string propertyName, SortDirection direction)
{
list = direction == SortDirection.Ascending
? list.OrderBy(x => x.GetType().GetProperty(propertyName).GetValue(x, null), new CustomComparer()).ToList()
: list.OrderByDescending(x => x.GetType().GetProperty(propertyName).GetValue(x, null), new CustomComparer()).ToList();
}
我知道 OrderBy 设置不正确,有人有什么建议吗?
谢谢。
public class CustomComparer : IComparer<object>
{
public int Compare(object x, object y)
{
}
}
【问题讨论】:
-
CustomComparer 的类型是什么?我的意思是它实现了 IComparer 还是 IEqualityComparer ?
-
我用存根更新了问题