2013-08-29 1 views
1

Контекст SQLServer 2012, Visual Studio 2010.Динамические столбцы SQLCLR?

Я не знаю, возможно ли это, но я пытаюсь генерировать столбцы в возвращаемой таблице динамически.

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

ответ

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.