编辑:1)姓名!=姓名,这不是问题。代码在99.9999%的时间内工作,并且偶尔在生产中失败(从不在实验室条件下> _<)我们正在部署调试代码,该代码应解释发生了什么,但在我们能够做到这一点之前,只需查找是否有人看到类似的东西。
编辑:2)仅供参考。为了测试,我运行了以下代码
...
var name = row["Name"].ToString().ToLower();
var name2 = row["name"].ToString().ToLower();
...
这实际上工作正常,建议至少在框架4中,row [xx]不区分大小写。不管怎样,这不是我不幸遇到的问题。希望它是:)
这是一段简单的代码片段,它会导致我们出现问题。它不仅仅是这段代码,它实际上是任何看起来像这样的代码。常见的部分是row [“name”]抛出异常,声称“name”不是表Table的列。
var command = new SqlCommand("SELECT Name FROM Table1");
DataSet result = helper.ExecuteQuery(command);
if (result == null || result.Tables.Count != 1)
{
return;
}
foreach (DataRow row in result.Tables[0].Rows)
{
var name = row["Name"].ToString().ToLower();
}
helper.ExecuteQuery返回一个DataSet,
正如您所看到的,我们知道结果是一个数据集,即它不是null并且它包含一个表。
我们知道它有行,因为我们处于foreach循环中。我们知道Name作为一个列存在,因为运行的sql语句总是非常难以编码到那里,没有歧义或聪明。
任何想法(与问题有关?)有一些解决方法,使用int索引器,大多数这些查询只返回一列或两列。首先检查列,所有这些事情,但我多年来从未遇到过这个问题。
答案 0 :(得分:1)
您可以尝试使用name in lower
var name = row["name"].ToString().ToLower(); //name in lower
答案 1 :(得分:0)
当按列名引用时,案例确实很重要。
row["Name"]
与row["name"]