プロジェクトで使用したWCFが1つあります。今度は、他のSilverlightプロジェクトでも使用したいと思います。
WCFは、パラメーターで指定されたクエリに従ってデータテーブルを返すように設定されています。単一のタイプのデータテーブルを返さないため、単一のタイプのオブジェクトにのみマップすることはできません。返されるデータテーブルの列は、パラメーターとして渡されるクエリによって定義されます。
今、Silverlightコードで同じWCFを使用したいのですが、データテーブルをSilverlightプロジェクトに使用できないことを知っています。このデータテーブルをienuberable/Listのジェネリックリスト/LINQオブジェクトに変換する必要があるため。
現在、以下のコードを使用して、datatableからIEnumerableへの変換を行っています>
var columns = table.Columns.Cast<DataColumn>();
return table.AsEnumerable().Select(r => columns.Select(c =>
new { Column = c.ColumnName, Value = r[c] })
.ToDictionary(i => i.Column, i => i.Value != DBNull.Value ? i.Value : null));
ここで皆さんの意見をお願いします。これは会話をするための最良の方法ですか?私のデータテーブルには200kを超える行があるため、メモリ効率のポイントも含めてください。
これを調査するためにあなたの時間をありがとう。