很简单的事情有点麻烦(我希望)
我正在接收一个用于排序的数组。我为按键选择器创建了一个字典。
但我错过了最后一块
ThenBy
或者每次都重新订购。
public List<Vehicle> OrderBy(string[] sorting, List<Vehicle> vehicles)
{
return Order(sorting, vehicles, SortingFiltersVehicle);
}
//this is a generic implementation
private List<T> Order<T>(string[] sorting, List<T> vehicles, IDictionary<string, Func<T, object>> filters)
{
if (!sorting.HasAnyValue())
return vehicles;
foreach (var orderby in sorting)
{
var key = orderby.Split("-")[0];
if (filters.ContainsKey(key.Trim()))
{
var direction = orderby.Contains("desc") ? OrderByDirection.Descending : OrderByDirection.Ascending;
vehicles = vehicles.OrderBy(filters[key], direction).ToList(); <== here is the problem
}
}
return vehicles;
}
private static readonly IDictionary<string, Func<Vehicle, object>> SortingFiltersVehicle = new Dictionary<string, Func<Vehicle, object>>
{
{ "price", v => v.DiscountedPrice },
{ "make", v => v.Make },
{ "model", v => v.Model },
{ "trimline", v => v.Trimline },
};