在我的数据库中我有很多表,其中一个表是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();
但它是字符串所以它不起作用。任何想法?
答案 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();
}