我正在处理一小段代码来遍历我的数据库数据。我从数据库中获取行,并希望循环使用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"))
但我不明白出了什么问题。有人可以解释/帮助我解决这个问题吗?
答案 0 :(得分:2)
controleRow
是DataRow
,controleRow.Field<int>("CODE")
返回单个int字段,您无法枚举。 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));