循环遍历 DataTable 中的行并在 C# 中提取元素
Looping through rows in DataTable and extracting element in C#
我想把DataTable中列的项目提取出来放到List中。
这是我的列表和数据表:
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"]);
}
我收到一个错误 "Cannot apply indexing with [] to an expression of type 'object'"
知道如何尽可能简单地解决这个问题吗?
您需要像这样在 foreach 循环中强制转换它:
foreach (DataRow row in table.Rows)
请注意,foreach 中的类型定义充当强制转换。现在你有一个允许 []
.
的类型
您还可以使用 Linq 使其看起来更干净:
List<int> product = table.Rows.Cast<DataRow>().Select(row => (int)row["StudyID"]).ToList()
您正在将 table 行转换为 var
object.Convert 并将其转换为 DataRow
尝试
foreach(DataRow row in table.Rows)
{
product.Add((int)row["StudyID"]);
}
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();
这是代码
Person p=new Person();
foreach(DataRow row in YourDataTable.Rows)
{
p.name = row["name"].ToString();
p.description = row["description"].ToString();
lst.Add(p);
}
lst 是列表<.Person>
只需将 var 行替换为 DataRow 行:
foreach (DataRow row in table.Rows)
{
product.Add((int)row["StudyID"]);
}
我想把DataTable中列的项目提取出来放到List中。
这是我的列表和数据表:
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"]);
}
我收到一个错误 "Cannot apply indexing with [] to an expression of type 'object'"
知道如何尽可能简单地解决这个问题吗?
您需要像这样在 foreach 循环中强制转换它:
foreach (DataRow row in table.Rows)
请注意,foreach 中的类型定义充当强制转换。现在你有一个允许 []
.
您还可以使用 Linq 使其看起来更干净:
List<int> product = table.Rows.Cast<DataRow>().Select(row => (int)row["StudyID"]).ToList()
您正在将 table 行转换为 var
object.Convert 并将其转换为 DataRow
尝试
foreach(DataRow row in table.Rows)
{
product.Add((int)row["StudyID"]);
}
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();
这是代码
Person p=new Person();
foreach(DataRow row in YourDataTable.Rows)
{
p.name = row["name"].ToString();
p.description = row["description"].ToString();
lst.Add(p);
}
lst 是列表<.Person>
只需将 var 行替换为 DataRow 行:
foreach (DataRow row in table.Rows)
{
product.Add((int)row["StudyID"]);
}