2011-07-20 15 views
1

私が最終的にやろうとしているのは、辞書の値をデータベースに一括して挿入することです。ここでディクショナリでLINQクエリをネストされたオブジェクトで使用するにはどうすればよいですか?

は私の辞書がセットアップである方法です:私は最終的に、これやりたい

public class Record 
    { 
     public int ValueNumber; 
     public string ValueString; 
     public byte[] ValueBinary; 
     public DateTime ValueDateTime; 
    } 

    public Dictionary<string, Record> Elements = new Dictionary<string, Record>(); 

public class SqlBulkUtilities 
{ 
    public static void BulkInsertDataTable(string connectionString, string tableName, DataTable table) 
    { 
     using (SqlConnection connection = new SqlConnection(connectionString)) 
     { 
      SqlBulkCopy bulkCopy = 
       new SqlBulkCopy 
       (
       connection, 
       SqlBulkCopyOptions.TableLock | 
       SqlBulkCopyOptions.FireTriggers | 
       SqlBulkCopyOptions.UseInternalTransaction, 
       null 
       ); 

      bulkCopy.DestinationTableName = tableName; 
      connection.Open(); 

      bulkCopy.WriteToServer(table); 
      connection.Close(); 
     } 
    } 
} 

何:ここ

IEnumerable<DataRow> query = Elements.AsEnumerable();   

// Create a table from the query. 
DataTable dt = query.CopyToDataTable<DataRow>(); 

// Insert into database 
SqlBulkUtilities.BulkInsertDataTable(ConnectionString, "Orders", dt); 

は私SqlBulkUtilitiesは、次のようになりますDataTableの各DataRowは次のようになります。

key、ValueNumber、ValueString、ValueBinary、ValueDateTime

ここで、「key」は辞書内の各エントリのキーです。

「レコード」オブジェクトに「キー」があった場合、問題はありません。しかし、そうではありません。

答えて

0

これを使用する:

var Result = from e in Elements 
      select new 
      { 
       Key = e.Key, 
       ValNum = e.Value.ValueNumber... 
      }; 
関連する問題