从数据库中检查数据时出现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"))

但我不明白出了什么问题。有人能解释/帮我解决这个问题吗?

从数据库中检查数据时出现Foreach错误

  • controleRowDataRowcontroleRow.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));