C# 如何从dapper repo调用返回具有dictionary属性的对象
我有一张具有以下内容的对象发票:C# 如何从dapper repo调用返回具有dictionary属性的对象,c#,linq,.net-core,C#,Linq,.net Core,我有一张具有以下内容的对象发票: public class Invoice { public int InvoiceId { get; set; } public int GroupId { get; set; } public IDictionary<int, double> Variables { get; set; } } 公共类发票 { public int InvoiceId{get;set;} public int Group
public class Invoice
{
public int InvoiceId { get; set; }
public int GroupId { get; set; }
public IDictionary<int, double> Variables { get; set; }
}
公共类发票
{
public int InvoiceId{get;set;}
public int GroupId{get;set;}
公共IDictionary变量{get;set;}
}
然后,我有一个简洁的存储库查询,如下所示:
const string query = @"select InvoiceId, GroupId, VariableId, VariableValue
From Invoices;";
var result = ExecuteQuery<Invoice>(query, null);
const string query=@“选择InvoiceId、GroupId、VariableId、VariableValue
从发票中提取;”;
var result=ExecuteQuery(查询,空);
我试图得到的是,上面的查询将返回一个平面数据集,我想在其中按InvoiceId、GroupId分组,然后将所有VariableId、VariableValue放入字典
我如何使用LINQ select many ToDictionary实现这一点
谢谢 var invoiceDictionary=newdictionary();
var invoiceDictionary = new Dictionary<int, Invoice>();
var list = connection.Query<Invoice, IDictionary<int, double>, Invoice>(
sql,
(invoice, variables) =>
{
Invoice invoiceEntry;
if (!invoiceDictionary.TryGetValue(invoice.InvoiceID, out invoiceEntry))
{
invoiceEntry = invoice;
invoiceEntry.Variables = new Dictionary<int, double>();
invoiceDictionary.Add(invoiceEntry.InvoiceID, invoiceEntry);
}
invoiceEntry.Variables.Add(variables.Key, variables.Value);
return invoiceEntry;
},
splitOn: "VariablesId")
.Distinct()
.ToList();
var list=connection.Query(
sql,
(发票、变量)=>
{
发票录入;
if(!invoiceDictionary.TryGetValue(invoice.InvoiceID,out invoiceEntry))
{
发票录入=发票;
invoiceEntry.Variables=新字典();
添加(invoiceEntry.InvoiceID,invoiceEntry);
}
invoiceEntry.Variables.Add(Variables.Key,Variables.Value);
退货发票录入;
},
splitOn:“VariablesId”)
.Distinct()
.ToList();
我的坏消息。编辑了我的答案