Динамические столбцы SQLCLR?

Контекст 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 # терпят неудачу. Что я делаю неправильно?


person bugmagnet    schedule 29.08.2013    source источник


Ответы (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 потреблять его или блевать.

person bugmagnet    schedule 29.08.2013