从数据库中的表中获取列名称

时间:2017-12-09 22:23:11

标签: c# asp.net sql-server

在我的数据库中我有很多表,其中一个表是nambed Company“。它的列名如下("ComName","ComAddress","ComType" ..etc) 我有一个函数从Company表中获取列名:

public List<string> GetColumnNames(string tablename)
{
    var names = typeof(Company).GetProperties().Select(p => p.Name).ToArray();
    return names.ToList();
}

直到现在一切都很好但是如果我想获得其他表的列呢?所以我必须在这句话中把新表的名称(在函数中给出,作为“tablename”)而不是“Company”:

var names = typeof(Company).GetProperties().Select(p => p.Name).ToArray();

但它是字符串所以它不起作用。任何想法?

2 个答案:

答案 0 :(得分:3)

typeof(Company).GetProperties()根本没有获取表的列的名称 - 它正在获取您用来表示该表的C#类/实体的属性的名称。您是否已经有一个流程来保证C#实体的属性名称与表的列名完全匹配?如果是这样,您可以采用相同的原则(但不是使用typeof(公司),而是需要按名称查找类型,这有多种方法)。如果没有,您将需要实际查询数据库以查找列名称。

答案 1 :(得分:0)

据我所知,您可以使用Type参数。

public List<string> GetColumnNames(Type tablename)
{

    var names = tablename.GetProperties().Select(p => p.Name).ToArray();

    return names.ToList();
}