我们如何在具有嵌套对象的Dictionary上使用LINQ查询?

时间:2011-07-20 22:40:21

标签: c# sql-server linq linq-to-sql linq-to-objects

我最终要做的是将字典中的值批量插入数据库。

以下是我的词典的设置方式:

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

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

我想最终,这样做:

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的样子:

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();
        }
    }
}

DataTable中的每个DataRow应该是这样的:

key,ValueNumber,ValueString,ValueBinary,ValueDateTime

其中“key”是词典中每个条目的关键。

如果“记录”对象中的“键”是正确的,那么我希望我没有问题。但事实并非如此。

1 个答案:

答案 0 :(得分:0)

使用它:

var Result = from e in Elements 
             select new 
             { 
                 Key = e.Key, 
                 ValNum = e.Value.ValueNumber... 
             };