1

上下文 SQLServer 2012、Visual Studio 2010。

我不知道这是否可能,但我正在尝试动态生成返回表中的列。

List<object> columnsInfo = new List<object>();      
foreach (string entry in poodle.getKs())
{
    columnsInfo.Add( new SqlMetaData(entry, SqlDbType.Text));
}

poodle.getKs() 给出了字符串数组中的列名列表。

这就是我感到困惑的地方。我正在尝试将对象列表转换为 SqlMetaData 数组,然后将其转换为 SqlDataRecord 以分配给记录变量。

SqlDataRecord record = (SqlDataRecord)columnsInfo.ToArray<SqlMetaData>(); 

我在构建中遇到的错误是

Instance argument: cannot convert from 'System.Collections.Generic.List<object>' to 'System.Collections.Generic.IEnumerable<Microsoft.SqlServer.Server.SqlMetaData>'    

'System.Collections.Generic.List<object>' does not contain a definition for 'ToArray' and the best extension method overload 'System.Linq.Enumerable.ToArray<TSource>(System.Collections.Generic.IEnumerable<TSource>)' has some invalid arguments  

然而,这是我的 C# 技能和理解力失败的地方。我究竟做错了什么?

4

1 回答 1

1

好的,解决了

List<SqlMetaData> columnsInfo = new List<SqlMetaData>(); 

foreach (string entry in poodle.getKs())
{
    columnsInfo.Add( new SqlMetaData(entry, SqlDbType.Text));
}

SqlDataRecord record = new SqlDataRecord(columnsInfo.ToArray<SqlMetaData>()); 

也很好地加载了数据。现在看看 SQLServer 是否会消耗它或 barf。

于 2013-08-29T09:53:42.623 回答