我想用下面的示例数据转换 DataTable
Employee subject1 subject2 subject3 .......
1 100 80 60......
2 90 70 70...
进入
列表。
Employee 对象如下..
public class Employee
{
public int EmpId { get; set;}
public Dictionary<string,decimal> SubjectMarks;
}
任何人都可以帮助我将这个 Datatable 转换为 C sharp 中的 List 或使用 linq。
最佳答案
因此,动态主题列从索引 1 开始,到 table.Columns-Count-1
结束。然后我会先创建这些列的数组。然后你可以使用Select
+ ToDictionary
+ ToList
:
DataColumn[] subjectColumns = table.Columns.Cast<DataColumn>().Skip(1).ToArray();
List<Employee> employee = table.AsEnumerable()
.Select(r => new Employee
{
EmpId = r.Field<int>("Employee"),
SubjectMarks = subjectColumns.Select(c => new
{
Subject = c.ColumnName,
Marks = r.Field<decimal>(c)
})
.ToDictionary(x => x.Subject, x => x.Marks)
}).ToList();
假设列的类型已经是 int
的 ID 和 decimal
的标记。否则使用 int.Parse
和 decimal.Parse
来转换它们。
关于c# - 将 DataTable(动态列)转换为 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208588/