C# 映射列表时指定字段名称<;KeyValuePair>;衣冠楚楚

C# 映射列表时指定字段名称<;KeyValuePair>;衣冠楚楚,c#,dapper,C#,Dapper,我已经从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);

我已经从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>>();
var PopularHits=
multi.Read().ToList();
列表以项目结束,但KVP的值为空,如何将这些值投影到KeyValuePair对象中?我似乎无法获得正确的lambda语法….

multi.Read()
multi.Read()
    .Select(x => new KeyValuePair<string, double>((string) x.URL, (double) x.MinsAgo)
    .ToList();
.Select(x=>newkeyvaluepair((string)x.URL,(double)x.MinsAgo) .ToList();
@lazyberezovsky
multi
是从
QueryMultiple
返回的多网格读取器-尽管需要注意的是,在读取单个网格时,这是不必要的-此查询可以使用
query
@MarcGravell读取谢谢,Marc。没有使用多网格读取器yet@lazyberezovsky你只需要在你需要的时候才需要它们ry包含多个
select
s-这可能很有用,即
select*from Customers,其中Id=@Id;select*from Orders,其中CustomerId=@Id;select*from customeraddress,其中CustomerId=@Id;
(或其他)这里就是这种情况,实际上有多个select,我从示例代码中省略了。