我有一个数据表,其中没有任何列是动态的。我需要一个包含标题名称和值的列表。我发现了一个与此问题类似的问题。
但无法获得所需的输出。 使用此解决方案输出 在动态 View 中:
我正在使用此代码转换为动态对象:
public static List<dynamic> ToDynamic(this DataTable dt)
{
var dynamicDt = new List<dynamic>();
foreach (DataRow row in dt.Rows)
{
dynamic dyn = new ExpandoObject();
foreach (DataColumn column in dt.Columns)
{
var dic = (IDictionary<string, object>)dyn;
dic[column.ColumnName] = row[column];
}
dynamicDt.Add(dyn);
}
return dynamicDt;
}
需要这样的输出:-
我怎样才能做到这一点?
最佳答案
您可以通过修改 the ToDynamic method you are using 来实现.原来的方法是:
public static class DataTableExtensions
{
public static List<dynamic> ToDynamic(this DataTable dt)
{
var dynamicDt = new List<dynamic>();
foreach (DataRow row in dt.Rows)
{
dynamic dyn = new ExpandoObject();
dynamicDt.Add(dyn);
//--------- change from here
foreach (DataColumn column in dt.Columns)
{
var dic = (IDictionary<string, object>)dyn;
dic[column.ColumnName] = row[column];
}
//--------- change up to here
}
return dynamicDt;
}
}
将“更改”注释之间的行替换为:
foreach (var columnName in new[] {"A", "B", "C", "D", "E"} )
{
var dic = (IDictionary<string, object>)dyn;
if(dt.Columns.Contains(columnName))
dic[columnName] = row[dt.Columns[columnName]];
else
dic[columnName] = 0;
}
假设您需要列名 A 到 E,如果您需要更多列,请适当调整。
关于c# - 当没有列是动态的时将 DataTable 转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100226/