我正在使用CsvHelper将CSV文件读取到Dynamic C#对象中,并且想要迭代List<dynamic>using 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
var properties = d.GetType().GetProperties(); 总是返回0,但是我可以在调试时看到有属性。
CSV文件包含以下数据:
Id,Name,Barnd
1,one,abc
2,two,xyz
Run Code Online (Sandbox Code Playgroud)
通常,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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |