【问题标题】:Foreach error when checking data from database从数据库检查数据时出现 Foreach 错误
【发布时间】:2015-07-02 11:46:18
【问题描述】:

我正在编写一小段代码来遍历我的数据库数据。我从数据库中获取行,并希望使用 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"))

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

【问题讨论】:

  • 你没有显示queryRow的声明或初始化。此外,heckedCode.ToString 在 C# 中必须是 heckedCode.ToString()
  • 应该是 controleRow
  • 就像我说的那样,Common.Log 是我自己的函数,所以是 Common.Log
  • Common是类,所以常用的函数比如Log函数

标签: c#


【解决方案1】:
  • controleRowDataRowcontroleRow.Field&lt;int&gt;("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));

【讨论】:

  • 感谢您的遮阳篷,但我只想循环通过 CODE 而不是通过其他行,我可以这样做吗?
  • @CKY:这是什么意思?您希望如何循环遍历单个整数?
  • 谁说它是一个整数,我在代码中有几个整数
  • @CKY:看看我编辑的答案。我展示了一种 LINQ 方法,它选择所有代码并使用 String.Join 将它们与逗号连接起来。
猜你喜欢
  • 2013-04-17
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
相关资源
最近更新 更多