Я написал специальный метод расширения LINQ, как показано ниже, но я думаю, что он может быть оптимизирован для больших результатов.Как оптимизировать этот метод расширения LINQ
Вот код:
public static IEnumerable<T> OrderByAncesty<T>(this IEnumerable<T> source, Func<T, DateTime> dateSelector, Func<T, float> scoreSelector)
{
var original = source.ToList();
var maxDate = source.Max(dateSelector);
var list = from p in original
let date = dateSelector(p)
let score = scoreSelector(p)
let date1 = date.ToOADate()
let date2 = maxDate.ToOADate()
let ancesty = (1 - (float)date1/(float)date2) * score
select new
{
TObject = p,
Ancesty = ancesty
};
return list.OrderBy(p => p.Ancesty).Select(p => p.TObject);
}
Почему вы используете выражения вместо 'Func'? –
Да, я не знаю .. Я думал, что он не работает с Func, я собираюсь обновить свой вопрос –