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

时间:2016-07-08 15:39:42

标签: c# datatable

我在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检索客户列表。根据编译器:

  

无法将带有[]的索引应用于“object”类型的表达式

谢谢。

1 个答案:

答案 0 :(得分:3)

你的错误在这里:

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