Согласно этому сайту алгоритм заказа для хакерских новостей выглядит примерно так:
(p - 1) / (t + 2) ^ 1,5
Описание:
голосов, поделенных на возрастной фактор
p = голосов (баллов) от пользователей. т =
время с момента подачи в часах.
р вычтено 1 для отрицания
податели голосования. возрастной фактор (время
с момента подачи в часах плюс два) до
мощность 1,5.
Учитывая структуру таблицы, подобную этой:
Пункт
ID
Ссылка
DatePosted
Item_Votes
ItemID
Значение
Каков наилучший способ реализации алгоритма с использованием linq to sql, смогу ли я написать запрос полностью на linq или мне нужно будет использовать хранимую процедуру или что-то еще.
Обновление. Завершено с использованием приведенного ниже кода на основе ответа TJB:
var votesQuery =
from i in db.Items
join v in db.Item_Votes on i.ItemID equals v.ItemID
orderby
(double)(v.Value - 1) /
Math.Pow(
(DateTime.Now - i.DatePosted.Value).TotalHours + 2,
1.5) descending
select i;