我想在DataTable中提取列的项目并将它们放在List中。
这是我的List和DataTable:
List<int> product1 = new List<int>();
DataTable table = this.IoC.Resolve<ISurveyResultsService>().GetProduct(studyYear, productName);
我想遍历DataTable并将元素放在列表中。我试过这样:
foreach (var row in table.Rows)
{
product.Add((int)row["StudyID"]);
}
我收到错误&#34;无法将带有[]的索引应用于&#39; object&#39;&#39;&#34;
类型的表达式知道如何尽可能简单地解决这个问题吗?
答案 0 :(得分:4)
你需要在foreach循环中将它强制转换为:
foreach (DataRow row in table.Rows)
请注意,foreach中的类型定义充当强制转换。现在您的类型允许[]
。
您还可以使用 Linq 使其看起来更干净:
List<int> product = table.Rows.Cast<DataRow>().Select(row => (int)row["StudyID"]).ToList()
答案 1 :(得分:1)
foreach (DataRow row in table.Rows)
{
product.Add((int)row["StudyID"]);
}
或
foreach (var row in table.AsEnumerable())
{
product.Add((int)row["StudyID"]);
}
或
products = table.AsEnumerable().Select(row=>(int)row["StudyID"]).ToList();
答案 2 :(得分:0)
您正在将表格行转换为var
对象。将其转换为DataRow
尝试
foreach(DataRow row in table.Rows)
{
product.Add((int)row["StudyID"]);
}
答案 3 :(得分:0)
这是代码
Person p=new Person();
foreach(DataRow row in YourDataTable.Rows)
{
p.name = row["name"].ToString();
p.description = row["description"].ToString();
lst.Add(p);
}
是列表&lt; .Person&gt;
答案 4 :(得分:0)
只需用DataRow行替换var行:
foreach (DataRow row in table.Rows)
{
product.Add((int)row["StudyID"]);
}