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

时间:2015-07-02 11:46:18

标签: c#

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

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

1 个答案:

答案 0 :(得分:2)

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