在博士中我从数据表中选择102行。
现在我需要循环前100个dr值。我对每个循环使用以下内容,它显示错误,如“无法将类型datarow转换为int”
首先,我可以取100行并处理一些逻辑,之后我需要从dr的前100个值中删除。之后我需要获取剩余的2个值。
DataRow[] dr = dtSourceDetail.Select("fld_description = '"+desc+"' ");
foreach(int i in dr.Take(100))
{
//process some logic
//here need to remove the first row from dr.
}
我该怎么做?
答案 0 :(得分:1)
您需要将foreach
中的类型更改为DataRow
DataRow[] dr = dtSourceDetail.Select("fld_description = '"+desc+"' ");
foreach(DataRow i in dr.Take(100))
{
//process some logic
//here need to remove the first row from dr.
}
foreach
会尝试将从枚举器接收的每个项目转换为您在语句中提供的类型。在这种情况下,您提供int
。它收到第一个DataRow
,然后尝试投射它,这是它失败的地方。
答案 1 :(得分:0)
好吧,<productFlavor>Compile(path: "<lib name>", configuration: <productFlavor><buildType>)
返回一个可枚举的Take
个对象。不是DataRow
的可数。所以循环变量必须是int
:
DataRow
现在您只有一个DataRow[] dr = dtSourceDetail.Select("fld_description = '"+desc+"' ");
foreach(DataRow row in dr.Take(100))
{
}
,您可以照常访问该行的列值。
row
答案 2 :(得分:0)
这可能适合你。
DataRow[] dr = dtSourceDetail.Select("fld_description = '"+desc+"' ");
for (int i = 0; i < dr.count; i=i+100)
{
foreach(DataRow i in dr.Skip(i).Take(100))
{
//process some logic
}
}
循环简单的第一个循环只是我们的计数器。然后下一个foreach循环,我们正在使用dr.Skip(i).Take(100)
,这意味着它将在下次跳过100时第一次占用100,然后给你下一个100.因为你没有100条记录,它会给你剩下的记录。