【发布时间】:2009-09-11 10:33:43
【问题描述】:
我有一个列表,我想按优先级对 Desc 进行排序,它是 int,可以是 0 到 100 之间的任何值。
我使用 GenericComparer,它允许设置 SortDirection 和 sortExpression。适用于任何字符串属性,例如 Name(它是 ProductLowDetail 的属性)。但是对于优先级,它的行为很奇怪。它确实排序,但它会改变每次重新加载 List 的排序方向(从 Desc 到 Asc,然后从 Asc 到 Desc 并重复)(浏览器中的简单 F5)。
我将 List 存储在会话中,并在 ID 代码下方存储我如何称呼它。
productList.Sort(new GenericComparer<ProductLowDetail>("DisplayPriority", SortDirection.Descending));
部分比较器实现:
public int Compare(T x, T y){
PropertyInfo propertyInfo = typeof (T).GetProperty(_sortExpression);
IComparable obj1 = (IComparable) propertyInfo.GetValue(x, null);
IComparable obj2 = (IComparable) propertyInfo.GetValue(y, null);
if (SortDirection == SortDirection.Ascending){
return obj1.CompareTo(obj2);
}
return obj2.CompareTo(obj1);
}
有人也遇到过这个问题吗?感谢您的任何建议。十。
【问题讨论】: