Использование linq на OrderedDictionary для получения максимального с GridView - PullRequest
4 голосов
/ 21 июня 2011

У меня есть пользовательский элемент управления GridView (наследует system.web.ui.webcontrols.gridview ), и я хотел бы контролировать значение TextBox на основе значений, недавно добавленных пользователем (вставленные значенияне передается источнику данных).

В Grid.DataBound я могу запрашивать ячейки одного столбца, чтобы получить текущий максимум, который я установил для TextBox.

int maxTimeSlot = grid.Rows.OfType<GridViewRow>().Max(r => int.Parse(r.Cells[1].Text));

После вставки новой строки у меня есть доступ к свойству «Вставки» таблицы, которое содержит список всех вставленных строк, например:

GridView.Inserts[0].NewValues & GridView.Inserts[0].OldValues

Что мне нужно сделать, это использоватьэтот список 'Вставок', чтобы снова получить максимальное значение, но я изо всех сил пытаюсь запросить NewValues.Values ​​(OrderedDictionaryKeyValueCollection), чтобы получить значение.

NewValues.Values.OfType<KeyValuePair<object, object>>().Select(r => r.Key == "timeslot").Max(t => (int)t.Value)

Выше моя "идея" о том, как это будет работатьно, естественно, это не так.

1 Ответ

3 голосов
/ 04 июля 2011

При вызове Select каждый KeyValuePair в NewValues.Values проецируется на логическое значение, поэтому у вас больше нет доступа к исходным данным.

Похоже, вы пытаетесь найти все значения "временного интервала", я думаю, вам нужно что-то вроде

NewValues.Values.OfType<KeyValuePair<object, object>>().Where(r => r.Key == "timeslot").Max(t => (int)t.Value)
...