簡體   English   中英

如何在類的IQueryable上使用SelectMany?

[英]How can I use SelectMany on my IQueryable of classes?

我已經為此努力了整整一天。

所以我的課看起來像這樣:

public class SupplierSummaryReport {
    public string SupplierName { get; set; }
    public decimal TurnOverValues { get; set; }
}

到目前為止,LINQ如下所示:

var data = (from i in _ctx.Invoices
                        where i.Turnover == true
                        where last5Years.Contains(i.InvoiceDate.Year)
                        select new {
                            Year = i.InvoiceDate.Year,
                            AccountName = i.AccountName,
                            Value = i.NetAmount_Home ?? 0
                        });

            var y = data.GroupBy(r => new { r.Year, r.AccountName })
               .Select(g => new APData.Audit.Models.ReportModels.SupplierSummaryReport {
                   SupplierName = g.Key.AccountName,
                   TurnOverValues = new List<decimal>{
                   g.Sum(r => r.Value)
                   } 
               });

這給了我看起來像這樣的數據:

{2014, "Test Supplier", 1}, {2012, "Test Supplier", 2}, {2015, "Test Supplier two", 5}, {2011, "Test Supplier two", 9}

我需要使用.SelectMany選擇SupplierNameTurnOverValues 但是,我需要將這些值放入單獨的類列表中,如下所示:

public class SupplierSummaryData {
    public string SupplierName { get; set; }
    public List<decimal> Values { get; set; }
}

我一直在尋找使用LINQ,但到目前為止我還沒有做到。 我了解這個問題非常具體,但是我無處可尋,如果您需要更多信息,請發表評論。

預期產量:

{"Test Supplier", {2,5}}, {"Test Supplier two", {5,6}}

您只需AccountName分組,然后為每個分組選擇Supplier Name和值列表,如下所示:

var result =
    data.GroupBy(r => r.AccountName)
    .Select(g => new APData.Audit.Models.ReportModels.SupplierSummaryReport
    {
        SupplierName = g.Key,
        TurnOverValues = g.Select(r => r.Value).ToList()
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM