微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何从dapper repo调用返回具有字典属性的对象

如何解决我如何从dapper repo调用返回具有字典属性的对象

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

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沿着这些路线选择许多ToDictionary?

谢谢!

解决方法

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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。