LINQ:获取表列名称

Len*_*ers 17 .net c# linq linq-to-sql

使用LINQ,我如何获取表的列名?C#3.0,3.5框架

小智 20

也许现在为时已晚,但我通过这段代码解决了这个问题

var db = new DataContex();
var columnNames = db.Mapping.MappingSource
                      .GetModel(typeof(DataContex))
                      .GetMetaType(typeof(_tablename))
                      .DataMembers;
Run Code Online (Sandbox Code Playgroud)

  • 对于VB.Net,使用`GetType(DataContext)`而不是`typeof(DataContext)`. (3认同)

小智 15

下面的代码将从返回表的所有列名称开始工作

var columnnames = from t in typeof(table_name).GetProperties() select t.Name
Run Code Online (Sandbox Code Playgroud)

  • 也许这没有被投票,因为您不仅获得了列,还获得了其他属性。毕竟,它通常是一个考虑到可扩展性的部分类。 (3认同)
  • 不知道为什么这没有被投票,这是最优雅的答案.这是lambda语法等价:var columnnames = typeof(table_name).GetProperties().Select(t => t.Name); (2认同)

Ric*_*dOD 6

我假设您的意思是使用LINQ to SQL,在这种情况下,请查看DataContext.Mapping属性.这就是我使用的.

如果你不是那个意思,也许你可以详细说明你想要实现的目标?

  • 这可以澄清一下......这不是一个很好的答案. (5认同)

Mar*_*eal 6

我偶然发现这个问题寻找同样的事情,并没有在这里看到一个非常好的答案.这就是我提出的.只需在C#表达式模式下将其放入LINQPad即可.

from t in typeof(UserQuery).GetProperties()
where t.Name == "Customers"
from c in t.GetValue(this,null).GetType().GetGenericArguments()[0].GetFields()
select c.Name
Run Code Online (Sandbox Code Playgroud)

根据需要修改.