C# 从Datatable创建动态属性

C# 从Datatable创建动态属性,c#,dynamic,reflection,properties,expandoobject,C#,Dynamic,Reflection,Properties,Expandoobject,我有一个财产低于阶级 public class MfrYearEqpType { public string EqpType { get; set; } public MfrYearEqpType() { } } 我想为我的类“MfrYearEqpType”创建动态属性(Datatable列名),并从Datatable下面设置值 DataTable dt=getData() 此表包含26行10列数据 我已经浏览了下面的链接。但我不知道如何处理

我有一个财产低于阶级

  public class MfrYearEqpType
  {   
    public string EqpType { get; set; }

    public MfrYearEqpType()
    {
    }
  }
我想为我的类“MfrYearEqpType”创建动态属性(Datatable列名),并从Datatable下面设置值

DataTable dt=getData()

此表包含26行10列数据

我已经浏览了下面的链接。但我不知道如何处理我的案子

我还使用了ExpandoObject。我做了下面的样品

  DataTable dt = getData();

  List<dynamic> expandoList = new List<dynamic>();

  foreach (DataRow row in dt.Rows)
  {
    //create a new ExpandoObject() at each row
   var expandoDict = new ExpandoObject() as IDictionary<String, Object>;
   foreach (DataColumn col in dt.Columns)
   {
      //put every column of this row into the new dictionary
      expandoDict.Add(col.ToString(), row[col.ColumnName].ToString());
   }

   //add this "row" to the list
   expandoList.Add(expandoDict);
   }
DataTable dt=getData();
List expandoList=新列表();
foreach(数据行中的数据行)
{
//在每行创建一个新的ExpandooObject()
var expandoDict=new ExpandoObject()作为IDictionary;
foreach(dt.列中的数据列列列)
{
//将此行的每一列都放入新词典
expandoDict.Add(col.ToString(),row[col.ColumnName].ToString());
}
//将此“行”添加到列表中
expandoList.Add(expandoDict);
}
但我的目标是创建MfrYearEqpType的列表。这样我就可以将MfrYearEqpType的列表绑定到Gridview


请帮我做这个

假设您在这里谈论的是ASP.NET,您可以直接将数据表绑定到GridView的
DataSource
属性


如果您对这10列显示为默认值感到满意,可以将
AutoGenerateColumns
属性设置为true。否则,您可能需要根据需要定义
列。绑定字段将允许您至少格式化特定列的值,而模板字段将允许完全自定义,您可以在其中定义如何呈现特定字段。

a)您不能用新属性装饰现有类。您只能将该对象转换为类似ExpandooObject的对象。b) 您没有提供任何代码来演示您的问题,因此我们没有任何帮助。请为我们提供帮助。嗨@john,我已经编辑了这个问题。请查收。谢谢。将
col.ToString()
更改为
col.ColumnName
。另外,如果您正在使用它从数据库加载数据,而不需要显示数据,请直接使用SqlDataReader,因为使用DataTable会增加不必要的开销。谢谢@john。但我最终还是想创建一个列表。有什么线索吗?为什么你不能让这个类有属性?