我想使用此处标记的 splitOn 功能: https://dapper-tutorial.net/result-multi-mapping
将结果中的每个 Order 分组到一个整数属性“EmployeeId”中。我遵循了如何使用 Dapper Dot Net 从数据库结果映射到字典对象? 中的建议。
但是我得到了一个 "已经添加了具有相同键的项" 的错误,那么我该如何通过 EmployeeId 对订单进行分组呢?
我不能修改 Order 类,并且我更喜欢使用字典来代替创建包装 Order 的类。然而,如果没有其他方法,我也可以接受包装 Order 的想法。
https://dotnetfiddle.net/hn6Sjf
public class Program
{
public class Order
{
public int OrderID { get; set; }
public int CustomerID { get; set; }
public DateTime OrderDate { get; set; }
public int ShipperID { get; set; }
}
public static void Main()
{
string sql = @"
SELECT TOP 10
EmployeeID,
OrderID,
CustomerID,
OrderDate,
ShipperID
FROM Orders
ORDER BY OrderID;
";
using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
{
var rawList = connection.Query<Order>(sql);
FiddleHelper.WriteTable(rawList);
var dict = connection.Query<int, List<Order>, KeyValuePair<int, List<Order>>>(sql,
(s, i) => new KeyValuePair<int, List<Order>>(s, i), null, null, true, "OrderID")
.ToDictionary(kv => kv.Key, kv => kv.Value);
FiddleHelper.WriteTable(dict);
}
}
}
for json
,以便返回一个JSON字符串,该字符串可以轻松反序列化为您的数据结构?这绝对是更少的代码,并且可能具有同样的性能。如果需要,让我知道,我可以提供一些额外的指针。谢谢。 - square_particle