读书人

集合已修改;枚举操作可能无法执行。该

发布时间: 2014-01-23 14:48:04 作者: rapoo

集合已修改;枚举操作可能无法执行。
string ConnMdbStr = "Data Source='" + txtsqlip.Text + "' ;Initial Catalog='" + dataname.Text + "';User ID=sa;Password='" + txtpassword.Text + "'";
SqlConnection ConnMdb = new SqlConnection(ConnMdbStr);
string SqlText = "SELECT * FROM Group_SGK3 ";
SqlDataAdapter da = new SqlDataAdapter(SqlText, ConnMdb);
try
{
//da.Fill(dt);
dtData.Clear();
da.Fill(dtData);

}
catch
{
break;
}
//}



foreach (DataRow dr in dtData.Rows) //遍历行 in 行的集合
{
byte[] EDS = new byte[183];
EDS[0] = 0x82; // emm table id
EDS[1] = 0x40; //
EDS[2] = 0x3f;
EDS[3] = 0x02;// emm secton length
byte[] groupid = HexStrToHexBytes(dr["Group_name"].ToString());
EDS[4] = groupid[0];
EDS[5] = groupid[1];
// emm secton length
//发送emm



foreach (DataRow dr in dtData.Rows) 这句出错了说“集合已修改;枚举操作可能无法执行。”这是怎么回事呢?程序上该怎么改呢?请高人指点!
[解决办法]
foreach (DataRow dr in dtData.Rows.Cast<DataRow>().ToList())


[解决办法]

引用:
foreach (DataRow dr in dtData.Rows) 这句出错了说“集合已修改;枚举操作可能无法执行。”这是怎么回事呢?程序上该怎么改呢?请高人指点!


foreach里面有代码对dtdata进行添加和移除的操作,这是不允许的。
你可以用中间变量记录一下要增加和移除的对象,循环结束后在进行添加和移除操作
[解决办法]
引用:
经过#1的方法改程序后,执行到byte[] groupid = HexStrToHexBytes(dr["Group_name"].ToString());会提示错误:“此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据”,这是怎么回事呢?

你的程序问题太多,根本没法看。
[解决办法]
你没贴完吧?是不是还有对dtData修改或者增删的代码?
[解决办法]
问题比较多,有些信息你没有提供,比如:是刚进入这个 foreach 的时候报错了,还是在 foreach 内部执行到某一句话的时候报错了?代码要贴完整,有些你可能出错的都不贴出来。
而且你…………没有单步调试吗?先单步调试一下,找到真正出错的语句再说吧!

读书人网 >C#

热点推荐