Скажем, у меня есть классы, такие как:агрегации LINQ
public class ServiceCall
{
public int ServiceCallID {get; set;}
public DateTime ReportedTimestamp {get; set;}
public bool IsPaid {get; set;}
public decimal LabourNet { get; set;}
public decimal LabourVat {get; set;}
}
public class UsedPart
{
public int UsedPartID { get; set; }
public decimal NetPrice { get; set; }
public decimal VatAmount {get; set;}
}
Я хочу, чтобы вернуть данные в течение формате:
Month #CallsReceived AmountInvoiced MoneyReceived
Jan 2009 202 €32050.20 €29200.00
Feb 2009 213 €35050.20 €34200.00
Сумма в счете-фактуре является общая сумма всех (NetPrices + VatAmounts) + (LabourNet + LabourVat) net a за месяц, а полученные деньги - это всего, где IsPaid = true. У меня возникли проблемы с получением запроса linq для этого отчета. Я не знаю, где взять мою группу и когда выполнить Sum.
Запрос linq, который у меня есть на данный момент, выглядит следующим образом, но я не получаю ничего близкого к тому, что я хочу в данный момент. Кто-нибудь с какой-то личностью?
var q = from s in ServiceCalls
join up in UsedParts on s.ServiceCallID equals up.ServiceCallID into tmp
from nullablePart in tmp.DefaultIfEmpty()
group s by s.ReportedTimestamp.Month
into grp
select new
{
Month = grp.Key,
CallsReceived = grp.Count(),
AmountInvoiced = grp.Sum(s => s.UsedParts.Sum(p => p.NetPrice)),
};
Пожалуйста, сообщите нам, что вы * * получаете. Имейте в виду, что это будет совокупно по сравнению с «месяцем года», а не «месяцем определенного года» - то есть он будет собираться вместе в феврале 2009 года и феврале 2008 года. –
Нет смысла показывать, что у меня есть на данный момент, так как это действительно повсюду. В основном, что я хочу сделать, это агрегировать данные из рядов деталей и группировать эти данные по году/месяцу по главной строке. Не очень сложно в sql, но не может показаться, что это правильно в linq. Он будет разбит на несколько запросов, я думаю. Любые идеи о том, как лучше подойти к нему? –