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();
我的坏消息。编辑了我的答案