【问题标题】:How can i return an object with a dictionary property from dapper repo call如何从 dapper repo 调用返回具有字典属性的对象
【发布时间】:2021-01-04 19:27:37
【问题描述】:

我有一个包含以下内容的对象发票:

public class Invoice
{
    public int InvoiceId { get; set; }
    
    public int GroupId { get; set; }
    
    public IDictionary<int, double> Variables { get; set; }
}

然后我有一个简洁的存储库查询,如下所示:

const string query = @"select InvoiceId, GroupId, VariableId, VariableValue
                       From Invoices;";


var result = ExecuteQuery<Invoice>(query, null);

我想要得到的是上面的查询将返回一个平面数据集,我想在其中按 InvoiceId、GroupId 分组,然后将所有 VariableId、VariableValues 放入字典中。

如何使用 LINQ select many ToDictionary 来实现这一点?

谢谢!

【问题讨论】:

    标签: c# linq .net-core


    【解决方案1】:
    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();
    

    【讨论】:

    • 我的错。编辑了我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    相关资源
    最近更新 更多