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 に答える