LINQ:获取表详细信息

时间:2011-10-05 19:40:44

标签: c# .net linq linq-to-sql

我正在使用LINQPad,我想知道表格的架构细节。

我知道我是用SQL做的:

SELECT column_name,* 
FROM information_schema.columns
WHERE table_name = '{table_name}'
ORDER BY ordinal_position

如何使用LINQ执行此操作?

3 个答案:

答案 0 :(得分:6)

LINQ to SQL上下文具有Mapping属性,您可以将其用于此类事情。像您提供的查询可能看起来像这样:

from t in context.Mapping.GetTables()
where t.TableName == "[table_name]"
from c in t.RowType.DataMembers
orderby c.Ordinal
select new {columnName = c.Name, columnInfo = c}

有关详细信息,请参阅this answer

答案 1 :(得分:4)

MetaTable t = MyDataContext.Mapping.GetTables().Where(
   i => i.TableName == "TABLENAME").SingleOrDefault();
PropertyInfo[] fields = t.RowType.InheritanceRoot.GetType().GetProperties();

'fields'将包含列的名称和类型。

答案 2 :(得分:0)

在LINQ to SQL中,您可以尝试将这些视图引入模型中。如果这不起作用,您可以创建一个检索信息的存储过程,然后LINQ to SQL映射存储过程,然后将其作为函数执行。