C# 使用LINQ内联更新gridview

C# 使用LINQ内联更新gridview,c#,asp.net,linq,gridview,C#,Asp.net,Linq,Gridview,我正试图用下面的代码通过LINQ内联更新gridview中名为“note”的记录。我的问题是,当我运行它并尝试执行updNote_行更新时,我的项目崩溃,说明var queryDetails不包含任何元素 检查oldValue变量显示其内容如下: System.Collections.Specialized.OrderedDictionary+OrderedKeyValueCollection 数据库由多个客户机组成,这些客户机分配了多个注释,所有这些信息都存储在一个数据库中 我的代码如下: A

我正试图用下面的代码通过LINQ内联更新gridview中名为“note”的记录。我的问题是,当我运行它并尝试执行updNote_行更新时,我的项目崩溃,说明var queryDetails不包含任何元素

检查oldValue变量显示其内容如下: System.Collections.Specialized.OrderedDictionary+OrderedKeyValueCollection

数据库由多个客户机组成,这些客户机分配了多个注释,所有这些信息都存储在一个数据库中

我的代码如下:

ASP.NET: 任何帮助都将不胜感激。

当您这样做时:

var oldValue = "" + e.OldValues.Values;
实际上,您是在e.OldValues.Values集合上调用ToString,该集合始终返回集合的类名而不是其内容,并解释了为什么会出现这种情况:

System.Collections.Specialized.OrderedDictionary+OrderedKeyValueCollection

您需要将e.OldValues.values中的所有值连接到一个字符串中(可能使用string.Join),假设您正在尝试搜索所有注释,或者您可以从e.OldValues.values集合中选择一个注释进行搜索

因此,集合中的每个值都只是一个字符串,您需要选择第一个匹配的值

尝试使用此LINQ选择所需的便笺:

var matchingNote = e.OldValues.Values.Cast<string>().Where(n => n == "note").First();

@GrantWinney只买了一件。我打算只过滤需要在LINQ语句中更改的注释,并更新该注释。oldValue是用户看到并打算更改的便笺,毕竟,生成的文本框中只有一个字符串。很抱歉让您感到烦恼,但是,从e.OldValues.Values集合中选择单个便笺的语法是什么?内容只是一个文本字符串,其中包含单个人的便笺。便笺对于某个客户的ID是唯一的。如果两个便笺相同,则只需第一个便笺就可以了。不幸的是,没有运气,我得到相同的“序列不包含元素”错误。还有什么我可以试试的吗?
var oldValue = "" + e.OldValues.Values;
var matchingNote = e.OldValues.Values.Cast<string>().Where(n => n == "note").First();