gpt4 book ai didi

c# - 使用 CsvHelper 时如何从 C# 动态对象中获取属性名称和值?

转载 作者:太空狗 更新时间:2023-10-29 20:26:22 31 4
gpt4 key购买 nike

我正在使用 CsvHelper 将 CSV 文件读入动态 C# 对象,我想迭代 List<dynamic>使用 foreach并获取属性名称和值。

FileInfo file = new FileInfo("C:\\Temp\\CSVTest.csv");

List<dynamic> dynObj;

using (var reader = new StreamReader(file.FullName))
using (var csv = new CsvReader(reader))
{
dynObj = csv.GetRecords<dynamic>().ToList();

foreach (var d in dynObj)
{
var properties = d.GetType().GetProperties();
foreach (var property in properties)
{
var PropertyName = property.Name;
var PropetyValue = d.GetType().GetProperty(property.Name).GetValue(d, null);
}
}
}

var properties = d.GetType().GetProperties();总是返回 0 但我可以在调试时看到有属性。

enter image description here

CSV 文件包含以下数据:

Id,Name,Barnd
1,one,abc
2,two,xyz

最佳答案

通常,dynamic 类型在使用时有一个System.Dynamic.ExpandoObject 类型对象。它与 C# 中的 KeyValuePair 类型相同。

以下解决方案将从 dynamic 类型返回键和值列表。

using (var csv = new CsvReader(reader))
{
dynObj = csv.GetRecords<dynamic>().ToList();

foreach (var d in dynObj)
{
var obj = d as System.Dynamic.ExpandoObject;

if (obj != null)
{
var keys = obj.Select(a => a.Key).ToList();
var values = obj.Select(a => a.Value).ToList();
}
}
}

关于c# - 使用 CsvHelper 时如何从 C# 动态对象中获取属性名称和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56143734/

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