'System.Data.DataRow'不包含'GetEnumerator'的公共定义

时间:2014-02-10 10:41:07

标签: foreach

我正在尝试对我在sqlservermanagement

上创建的数据库进行连接

我在visual studio 2012上制作了一个控制台应用程序

我有这个陈述

  foreach (DataRow pRow in persoaneSet.Tables["persoane"].Rows)
  {
    Console.Write("\t{0}\t{1}\t{2}", pRow["nrcrt"],pRow["nume"],pRow["codc"]);
    foreach (DataRow cRow in pRow.GetParentRow(relPersCrt)) // **here is the error**
    {
        Console.WriteLine("\t{0}\t{1}\t{2}", cRow["autor"],cRow["titlu"],cRow["cota"]);
    }
  }

在这里,我必须从我的数据库和表1中将表1与表2相提并论,我和我的老师一样,但不幸的是我记得错误

  

foreach语句不能对'System.Data.DataRow'类型的变量进行操作,因为'System.Data.DataRow'不包含'GetEnumerator'的公共定义

我该怎么办?

老师的例子,但不是我的

2 个答案:

答案 0 :(得分:1)

您不需要foreach,因为只有一个父行。尝试:

foreach (DataRow pRow in persoaneSet.Tables["persoane"].Rows)
{
    Console.Write("\t{0}\t{1}\t{2}", pRow["nrcrt"],pRow["nume"],pRow["codc"]);

    DataRow cRow = pRow.GetParentRow(relPersCrt);
    Console.WriteLine("\t{0}\t{1}\t{2}", cRow["autor"],cRow["titlu"],cRow["cota"]);
}

此外,您应该考虑添加额外的检查,因为您的代码很容易出现未处理的异常。

答案 1 :(得分:0)

您只能将foreach用于实现IEnumerable接口的东西。基本上你只能迭代一堆东西,而不是一件事。你的第一个foreach遍历一组行,第二个你试图迭代一行。