[英]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
選擇SupplierName
和TurnOverValues
。 但是,我需要將這些值放入單獨的類列表中,如下所示:
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.