【问题标题】:How do we use a LINQ query on a Dictionary with a nested object?我们如何在带有嵌套对象的字典上使用 LINQ 查询?
【发布时间】:2011-07-20 22:40:20
【问题描述】:

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

这是我的字典的设置方式:

    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 应该是这样的:

键、ValueNumber、ValueString、ValueBinary、ValueDateTime

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

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

【问题讨论】:

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


    【解决方案1】:

    使用这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多