Подтвердить что ты не робот

Выберите только самые низкие значения с помощью 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
4b9b3361

Ответ 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

Сортировка не требуется для вашего сценария.