无法对表达式类型对象应用索引
本文关键字:对象 应用 索引 类型 表达式 | 更新日期: 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.