C# 从类中获取所有datatable属性的所有列名

C# 从类中获取所有datatable属性的所有列名,c#,.net,.net-core,C#,.net,.net Core,我有一个像下面这样的班级。它有多个DataTable类型的属性。我正在尝试动态获取所有属性并打印它们的列名 public class Example { public DataTable dt1 { get; set; } public DataTable dt2 { get; set; } ... public DataTable dtN { get; set; } } 预期产出: 表1名称:dt1 表1列:第11列、第12列、第13列 表2名称:dt2 表

我有一个像下面这样的班级。它有多个DataTable类型的属性。我正在尝试动态获取所有属性并打印它们的列名

public class Example
{
    public DataTable dt1 { get; set; }
    public DataTable dt2 { get; set; }
    ...
    public DataTable dtN { get; set; }
} 
预期产出:

表1名称:dt1
表1列:第11列、第12列、第13列

表2名称:dt2
表2列:第21列、第22列、第23列

表名:dtN

表列:列N1、列N2、列N3

假设您有一个类型为
Example
的对象
ex
,您可以通过以下操作找到所有属性的列名:

Type exType = ex.GetType();
List<PropertyInfo> props = new List<PropertyInfo>(exType.GetProperties());
foreach(PropertyInfo prop in props) {
    DataTable thisDT = (DataTable)prop.GetValue(ex);
    var tableName = prop.Name;
    var columnNames = new List<string>();
    foreach(DataColumn column in thisDT.Columns) {
        columnNames.Add(column.Name);
    }
    Console.WriteLine($"Table Name: {tableName}");
    Console.WriteLine($"Column Names: {String.Join(",", columnNames)}");
}
Type exType=ex.GetType();
List props=新列表(exType.GetProperties());
foreach(PropertyInfo props in props){
DataTable thisDT=(DataTable)prop.GetValue(ex);
var tableName=prop.Name;
var columnNames=新列表();
foreach(thisDT.Columns中的DataColumn列){
columnNames.Add(column.Name);
}
WriteLine($“表名:{tableName}”);
Console.WriteLine($”列名:{String.Join(“,”,columnNames)});
}

注意:这假设示例中的每个属性都是数据表。如果没有,您需要在
foreach(PropertyInfo props in props)
循环中做更多的工作。

假设您有一个
Example
类型的对象
ex
,您可以通过以下操作找到所有属性的列名:

Type exType = ex.GetType();
List<PropertyInfo> props = new List<PropertyInfo>(exType.GetProperties());
foreach(PropertyInfo prop in props) {
    DataTable thisDT = (DataTable)prop.GetValue(ex);
    var tableName = prop.Name;
    var columnNames = new List<string>();
    foreach(DataColumn column in thisDT.Columns) {
        columnNames.Add(column.Name);
    }
    Console.WriteLine($"Table Name: {tableName}");
    Console.WriteLine($"Column Names: {String.Join(",", columnNames)}");
}
Type exType=ex.GetType();
List props=新列表(exType.GetProperties());
foreach(PropertyInfo props in props){
DataTable thisDT=(DataTable)prop.GetValue(ex);
var tableName=prop.Name;
var columnNames=新列表();
foreach(thisDT.Columns中的DataColumn列){
columnNames.Add(column.Name);
}
WriteLine($“表名:{tableName}”);
Console.WriteLine($”列名:{String.Join(“,”,columnNames)});
}
注意:这假设示例中的每个属性都是数据表。如果没有,您需要在
foreach(PropertyInfo props in props)
循环中做更多的工作。

“我想…”这是很好的了解。介意和我们分享一下你已经走了多远吗?“我想……”很高兴知道。介意和我们分享一下你已经走了多远吗?