C# 映射列表时指定字段名称<;KeyValuePair>;衣冠楚楚
我已经从Dapper作为一本字典中得到了一些结果: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);
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();
@lazyberezovskymulti
是从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,我从示例代码中省略了。