我正在使用CsvHelper将CSV文件读取到Dynamic C#对象中,并且想要迭代List<dynamic>
usingforeach
并获取属性名称和值。
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,但我可以在调试时看到有属性。
CSV文件包含以下数据:
Id,Name,Barnd
1,one,abc
2,two,xyz
通常,dynamic
类型System.Dynamic.ExpandoObject
在使用时具有类型对象。与中的KeyValuePair
类型相同C#
。
以下解决方案将从类型返回键和值的列表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();
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句