我在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”类型的表达式
谢谢。
答案 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
)