Выберите только самые низкие значения с помощью Linq
Привет
Я получил следующий linq для заказа моего ввода после наименьшего значения.
Но я бы хотел, чтобы он выводил только самые низкие значения.
var sortedDict = (from entry in x where entry.Value > 0 orderby entry.Value ascending select entry);
Теперь, если он получает следующий ввод.
3 4 2 6 2
Это будет мой вывод
2 2 3 4 6
Что мне нужно изменить в моем linq, поэтому я получаю только этот вывод
2 2
Ответы
Ответ 1
Ну, вы могли бы сделать:
int min = x.Min(entry => entry.Value);
var lowestValues = x.Where(entry => entry.Value == min);
Обратите внимание, что я явно разделил их, как если бы вы использовали Where(entry => entry.Value == x.Min(y => y.Value))
, он будет искать минимум на каждой итерации. С другой стороны, это верно для LINQ to Objects, но в LINQ to SQL, вероятно, было бы лучше сделать все это в одном запросе и позволить базе данных отсортировать его.
Ответ 2
Вы можете попробовать что-то вроде этого:
data.Where (d => d == data.Min())
Обратите внимание, что это не самый быстрый способ сделать это.
Ответ 3
Сначала найдите наименьшее значение:
var min = (from entry in x where entry.Value > 0 select entry).Min();
Затем выберите пункты:
var sortedDict = from entry in x where entry.Value == min select entry
Сортировка не требуется для вашего сценария.