Каков наилучший способ получить индекс строки таблицы данных с наименьшим целочисленным значением для определенного столбца - PullRequest
0 голосов
/ 30 октября 2018

Может ли кто-нибудь сказать мне, пожалуйста, какой лучший / самый эффективный способ получить индекс строки в представлении таблицы данных, который имеет наименьшее целочисленное значение для определенного столбца.

Я сделал это с помощью цикла foreach для обхода набора строк, сравнения соответствующего значения каждой строки и сохранения наименьшего значения. Каждый раз, когда я нахожу меньшее значение, я обновляю свою «самую маленькую» переменную этим значением. Это работает, но я уверен, что должно быть какое-то лямбда-выражение, которое делает лучше. Может ли кто-нибудь помочь, пожалуйста?

Это столбец, содержащий значение:

dgvItems.Rows[i].Cells["col1"].Value

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

лучший способ сделать это с запросами LINQ,

LINQ выглядит лучше, удобочитаемее и эффективнее, чем для циклов

Вы должны использовать источник данных DataGridView, а не напрямую к данным DataGridView

DataTable dt = dgv.DataSource as DataTable;

MinRow:     var result = dt.Rows.IndexOf(dt.AsEnumerable().OrderBy(x => x["col1"]).First());
MaxRow:     var result1 = dt.Rows.IndexOf(dt.AsEnumerable().OrderByDescending(x => x["col1"]).First());

надеюсь, это поможет вам

0 голосов
/ 30 октября 2018

Я помогу вам в этом, так как вы не спрашиваете об использовании LINQ. Давайте сделаем это "обычным" способом ..

Сначала объявите новый List

List<int> columnValue = new List<int>();

Итерируем по каждой строке в сетке

    foreach (DataGridViewRow row in myDataGrid.Rows)
    {
        if (null != row && null != row.Cells["col1"].Value)
        {
            //Add the value of columnValue to list
            columnValue.Add(Convert.ToInt32(row.Cells[0].Value.ToString()));
        }
    }

и получите МИН. значение из LIST

    int result = columnValue.Min();

наконец, получите индекс значения, которое мы получили из LIST

    int i = columnValue.IndexOf(result); //returns the Index from "result" var
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...