在OrderedDictionary上使用linq来获得带有GridView的max

本文关键字:GridView max OrderedDictionary linq | 更新日期: 2023-09-27 17:59:57

我有一个自定义GridView控件(继承了system.web.ui.webcontrols.GridView),我想根据用户最近插入的值来控制TextBox的值(插入的值不会提交到数据源)。

在Grid.DataBound中,我可以查询单个列的单元格,以获得我设置为TextBox的当前最大值。

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

插入新行后,我可以访问网格的"Inserts"属性,该属性包含迄今为止插入的所有行的列表,例如:

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)

以上是我对它如何运作的"想法",但很自然,它不是。

在OrderedDictionary上使用linq来获得带有GridView的max

对Select的调用将NewValues.Values中的每个KeyValuePair投影为布尔值,因此您不再可以访问原始数据。

因为看起来你正在试图找到所有的"时隙"值,我认为你需要像这样的东西

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