【发布时间】:2010-06-08 10:09:00
【问题描述】:
我在 C# 中定义了以下类
class myClass<T,U>
{
public T PropertyOne { get; set; }
public U PropertyTwo { get; set; }
}
我需要编写一个函数,对 myClass 对象列表进行重新排序,并采用其他两个参数来定义我如何进行重新排序:我的重新排序是否依赖于 PropertyOne 或 PropertyTwo,它是升序还是降序。假设这两个参数是布尔值。以我目前在 LINQ 方面的知识,我会写:
public IList<myClass<T,U>> ReOrder(IList<myClass<T,U>> myList, bool usePropertyOne, bool ascending)
{
if (usePropertyOne)
{
if (ascending)
{
return myList.OrderBy(o => o.PropertyOne).ToList();
}
else
{
return myList.OrderByDescending(o => o.PropertyOne).ToList();
}
}
else
{
if (ascending)
{
return myList.OrderBy(o => o.PropertyTwo).ToList();
}
else
{
return myList.OrderByDescending(o => o.PropertyTwo).ToList();
}
}
}
有什么更有效/更优雅的方式来做到这一点?当我调用 OrderBy 或 OrderByDescending 时,如何声明要重用的 Func<myClass<U,V>,TResult> keySelector 对象?我对答案很感兴趣,因为在我的现实生活中,我可以拥有两个以上的属性。
【问题讨论】:
标签: c# linq sql-order-by