开发者

How do we use a LINQ query on a Dictionary with a nested object?

What I am ultimately trying to do is bulk insert the values from a dictionary into the database.

He开发者_Go百科re is how my dictionary is setup:

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

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

I want to ultimately, do this:

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

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

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

Here is what my SqlBulkUtilities looks like:

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

What each DataRow in the DataTable should look like is this:

key, ValueNumber, ValueString, ValueBinary, ValueDateTime

Where "key" is the key in each entry in the Dictionary.

If "key" were right in the "Record" object, then I would have no issue, I expect. But it's not.


use this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜