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...
};
精彩评论