从数据库中检查数据时出现Foreach错误
本文关键字:Foreach 错误 数据 数据库 检查 | 更新日期: 2023-09-27 18:00:44
我正在编写一小段代码来循环使用我的数据库数据。我从数据库中找到行,并希望用foreach循环遍历其中一行。然后在foreach中,我目前正在尝试制作一条控制台消息,以便查看它是否有效。
函数Common.Log
是由我和同事创建的函数。
这是代码:
SqlParameter bonIdParam = new SqlParameter("bonId", bonId);
DataTable controleTable = RidderQuery(controleQuery, bonIdParam);
DataRow controleRow = controleTable.Rows[0];
int code= controleRow .Field<int>("CODE");
int productionDone = queryRow.Field<int>("PRODUCTIONDONE"); // 1 = true, 0 = false
foreach(int checkedCode in controleRow .Field<int>("CODE"))
{
Common.Log(checkedCode.ToString);
}
我遇到的问题是foreach循环不起作用。是的,我知道这很不清楚,但我不知道如何更好地解释。所以这些是我得到的错误:
错误3:参数1:无法从"方法组"转换为"字符串"
错误1:foreach语句无法对"int"类型的变量进行操作,因为"int"不包含"GetEnumerator"的公共定义
错误2:"LocatieVerwerkingWifi.Common.Log(string)"的最佳重载方法匹配包含一些无效参数
我能做些什么来修复这些错误?我认为问题出在这一行:
foreach(int checkedCode in queryRow.Field<int>("CODE"))
但我不明白出了什么问题。有人能解释/帮我解决这个问题吗?
controleRow
是DataRow
,controleRow.Field<int>("CODE")
返回一个无法枚举的int字段- 在C#中,
checkedCode.ToString
必须是checkedCode.ToString()
也许你想循环所有行:
foreach(DataRow row in controleTable.Rows)
{
int checkedCode = row.Field<int>("CODE");
Common.Log(checkedCode.ToString());
}
您还可以使用LINQ和String.Join
:从所有代码中创建一个字符串
var allCodes = controleTable.AsEnumerable().Select(r => r.Field<int>("CODE"));
Common.Log(string.Join(",", allCodes));