如何从存储过程返回的表中获取列名

Cod*_*r 2 3 c# sql linq asp.net stored-procedures

我有一个返回表的存储过程.存储的proc通过linq datacontext调用.

它工作正常,我得到了表,但我真的想得到与返回的每个特定单元格相关的标题.

有谁知道如何做到这一点?

存储过程调用如下:

var table = DataContext.GetTable().ToList();
Run Code Online (Sandbox Code Playgroud)

所以我得到了一个List<GetTable>.数据很好我只想要列名.

Con*_*rix 5

您可以使用反射来执行此操作

var columns = table.First();

var properties = (from property in columns.GetType().GetProperties()
                  select property.Name).ToList();

foreach (var property in properties)
    Console.WriteLine(property);
Run Code Online (Sandbox Code Playgroud)

您还可以 在System.Data.Linq.Mapping命名空间中使用 元模型

AttributeMappingSource mappping = new System.Data.Linq.Mapping.AttributeMappingSource();
var model = mappping.GetModel(typeof(MyDataContext));


MetaFunction function = model.GetFunction(typeof(MyDataContext).GetMethod("MyStoredProc"));


foreach (var resultTypes in function.ResultRowTypes)
{

    foreach (var column in resultTypes.DataMembers)
    Console.WriteLine(column.Name);

}
Run Code Online (Sandbox Code Playgroud)

由于存储过程可以有多个结果集,因此它可能是处理该情况的更好方法.