Улучшение алгоритма и синтаксиса для выражения c # linq - PullRequest
0 голосов
/ 26 сентября 2011

Я немного поработал над linq в c # .net 3.5 и чувствую, что должен быть в состоянии сделать следующее немного лучше.

Есть ли способ объединить это в один оператор linq.

Условия следующие

  1. Если список содержит элемент, в котором число больше или равно порог, то мы можем использовать список
  2. Упорядочить список по количеству
  3. Упорядочить список по дате

Я также хотел бы добавить еще одно условие на счет, где я мог бы обрабатывать все элементы с количеством, большим или равным пороговому значению, одинаковым. Я мог бы сделать это, ограничив счет порогом, но я бы предпочел не делать этого в случае изменения порога. Я немного озадачен тем, как это сделать, кроме временного редактирования записей, когда я получаю их из базы данных, а не сохраняю их. то есть с порогом 3 список (1,2,3,4,5) становится (3,3 (4), 3 (5), 2,1) до сортировки по дате.

var allFaves = m_favouriteRepo.Get(user);

if(allFaves.Any(t => t.Count >= threshold))
{
    var ordered = allFaves
                 .OrderByDescending(x => x.Count)
                 .ThenByDescending(x => x.SortDate)
                 .ToList();
}

Спасибо Neil

1 Ответ

3 голосов
/ 26 сентября 2011
if(allFaves.Any(t => t.Count >= threshold))
{
    var ordered = allFaves
                 .OrderByDescending(x => x.Count>=threshold?threshold:x.Count)
                 .ThenByDescending(x => x.DatesHistory)
                 .ToList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...