Получите max DataGridViewRow на основе идентификатора записи, используя LINQ

Я пытаюсь получить DataGridViewRow с максимальным значением идентификатора записи. Я могу получить сам идентификатор записи, но мне нужно найти саму строку.

Это мой код для получения максимального идентификатора записи, и он отлично работает:

var addedRow =
                dataGridView.Rows
                .Cast<DataGridViewRow>()
                .Where(r => r.Cells[Glossary.RowType].Value.ToString().Equals(Glossary.RowTypeCustom))
                .Select(r => Convert.ToInt(r.Cells[Glossary.RecordId].Value))
                .Max();

Я попытался:

.Max(r => r.Cells[Glossary.RecordId].Value);

Я не понимаю, как получить саму строку, чтобы я мог сосредоточиться на ней:

dataGridView.CurrentCell = addedRow;

person ehh    schedule 14.02.2016    source источник


Ответы (1)


попробуйте использовать это.

    var addedRow =
            dataGridView.Rows
            .Cast<DataGridViewRow>()
            .Where(r => r.Cells[Glossary.RowType].Value.ToString().Equals(Glossary.RowTypeCustom))
            .OrderByDescending(r => Convert.ToInt(r.Cells[Glossary.RecordId].Value))
            .FirstOrDefault();

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

person Viplock    schedule 14.02.2016
comment
Это решение отлично работает, но я не понимаю, как это сделать с помощью Max. - person ehh; 14.02.2016
comment
MAX возвращает тот же тип переменной, что и поле. Таким образом, с Max вам нужно получить максимальное значение, а затем получить значение строки, написав другой linq. - person Viplock; 14.02.2016