LINQ:获取表列名称

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

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

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

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

 var db = new DataContex(); var columnNames = db.Mapping.MappingSource .GetModel(typeof(DataContex)) .GetMetaType(typeof(_tablename)) .DataMembers; 

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

 var columnnames = from t in typeof(table_name).GetProperties() select t.Name 

我偶然发现这个问题寻找同样的事情,并没有在这里看到一个非常好的答案。 这就是我提出的。 只需在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 

根据需要修改。

我在LinqPad中使用了这段代码

 from t in typeof(table_name).GetFields() select t.Name 

在数据上下文中使用ExecuteQuery方法并执行此SQL脚本:

 var columnNames = ctx.ExecuteQuery ("SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('your table name');"); 

这将为您提供一个IEnumerable其中包含您指定的表中的所有列名。

当然,如果您需要,您可以始终从SQL Server的sys.columns目录视图中检索更多信息(例如数据类型,最大长度)。

使用reflection迭代L2S类的属性

如果您正在讨论获取映射表的列,请参阅此答案以了解如何获取列属性。 从那里你可以得到列名,类型等。

  var query = from x in DataBase.Table_Name select x.Column_Name; 

sp_help’TableName’

LinqPad SQL窗口到ms sql server的选项

在LinqPad:

TableNames.Take(1)有效。

输入速度很快。 (虽然你处于一个理想的世界,但不选择任何行会更好。)

请注意,它是TableName的复数forms。 您也可以执行Take(0)并查看SQL结果选项卡。