无法对表达式类型对象应用索引

本文关键字:对象 应用 索引 类型 表达式 | 更新日期: 2023-09-27 17:55:58

我在 C# 中有一个非常简单的项目,但由于我在前进过程中遇到错误,所以我没有太多项目。我确实有一个名为CUSTOMER的类,其中包含几行代码。

 public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }

    public Customer(DataRow row)
    {
        this.FirstName = row["FirstName"].ToString();
    }

    public List<Customer> GetCustomer()
    {
        List<Customer> c=new List<Customer>();
        DataTable dt=new DataTable();
        Dal.GetDataTable(dt, "select * from customer");
        foreach (var row in dt.Rows)
        {
            c.Add(new Customer(row["FirstName"]));  //Error here
        }
        return c;
    }
}

我相信这段代码非常简单,我想从DataTable中检索客户列表。根据编译器:

无法将 [] 的索引应用于类型为"对象"的表达式

谢谢。

无法对表达式类型对象应用索引

你的错误在这里:

foreach (var row in dt.Rows)
{
     c.Add(new Customer(row["FirstName"]));
}

您应该更改它以匹配构造函数:

foreach (DataRow row in dt.Rows)
{
     c.Add(new Customer(row));
}

构造函数接受一个DataRow,所以你需要传递一行而不是一个对象(row["FirstName"]返回一个对象,它是当前行的FirstName值)。

您还需要隐式指定 foreach 变量的类型 (DataRow row in dt.Rows

我试图通过foreach循环迭代行,但得到了同样的错误。使用"数据行"变量类型而不是"var"。

foreach(var row in table.Rows)
    Console.WriteLine(row["fName"]);
} //This one gives error
foreach(DataRow row in table.Rows)
    Console.WriteLine(row["fName"]);
} //This one works fine.