gpt4 book ai didi

c# - 将 DataTable(动态列)转换为 List

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:43 24 4
gpt4 key购买 nike

我想用下面的示例数据转换 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.Parsedecimal.Parse 来转换它们。

关于c# - 将 DataTable(动态列)转换为 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com