【问题标题】:Specify field names when mapping List<KeyValuePair> in Dapper在 Dapper 中映射 List<KeyValuePair> 时指定字段名称
【发布时间】:2013-12-06 19:56:10
【问题描述】:

我从 Dapper 作为字典得到了结果:

  using (var multi = cnn.QueryMultiple("dbo.[s_Dashboard_stats]", 
     commandType: CommandType.StoredProcedure))
  {
    var recentHits =
        multi.Read().ToDictionary(x => (string)x.URL, x => (double)x.MinsAgo);
  }

这工作正常,但数据更改导致(正确)重复键值。为了解决这个问题,我想我应该将字典改为列表:

var PopularHits =
    multi.Read<KeyValuePair<string, double>>().ToList<KeyValuePair<string, double>>();

列表以项目结束,但 KVP 的值为空,如何将值投影到 KeyValuePair 对象中?我似乎无法正确获取 lambda 语法.....

【问题讨论】:

  • @lazyberezovsky multi 是从QueryMultiple 返回的多网格读取器 - 尽管必须注意,在读取单个网格时,这是不必要的 - 可以使用 @987654325 读取此查询@
  • @MarcGravell 谢谢,马克。还没用过多格阅读器
  • @lazyberezovsky 只有在查询包含多个 selects 时才需要它们 - 这可能很有用,即 select * from Customers where Id=@id; select * from Orders where CustomerId=@id; select * from CustomerAddresses where CustomerId=@id;(或其他)
  • 这里就是这种情况,实际上有多个 SELECT 我从示例代码中省略了。

标签: c# dapper


【解决方案1】:
multi.Read()
    .Select(x => new KeyValuePair<string, double>((string) x.URL, (double) x.MinsAgo)
    .ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2018-07-29
    • 2013-11-22
    相关资源
    最近更新 更多