使用 CsvHelper 时如何从 C# 动态对象中获取 属性 名称和值?
How to get property name and value from C# Dynamic object when using CsvHelper?
我正在使用 CsvHelper 将 CSV 文件读入动态 C# 对象,我想使用 foreach
迭代 List<dynamic>
并获取 属性 名称和值。
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();
总是 return 0 但我可以在调试时看到有属性。
CSV 文件包含以下数据:
Id,Name,Barnd
1,one,abc
2,two,xyz
正常情况下,dynamic
类型在使用时会有一个System.Dynamic.ExpandoObject
类型的对象。它与 C#
中的 KeyValuePair
类型相同。
以下解决方案将 return 来自 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();
}
}
}
我正在使用 CsvHelper 将 CSV 文件读入动态 C# 对象,我想使用 foreach
迭代 List<dynamic>
并获取 属性 名称和值。
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();
总是 return 0 但我可以在调试时看到有属性。
CSV 文件包含以下数据:
Id,Name,Barnd
1,one,abc
2,two,xyz
正常情况下,dynamic
类型在使用时会有一个System.Dynamic.ExpandoObject
类型的对象。它与 C#
中的 KeyValuePair
类型相同。
以下解决方案将 return 来自 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();
}
}
}