Я хочу использовать функцию splitOn, обозначенную здесь: https://dapper-tutorial.net/result-multi-mapping
, чтобы сгруппировать каждый Орден результатов в целочисленное свойство «EmployeeId». Я следовал совету Как сопоставить объект Dictionary из результатов базы данных, используя Dapper Dot Net?
, но я получаю An item with the same key has already been added.
, так как я могу сгруппировать свои заказы по EmployeeID?
Я не могу изменить класс 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);
}
}
}