Costruire un gruppo di rapporti, hanno a che fare la stessa cosa più e più volte con diversi campiC'è un modo per ridurre la duplicazione in questi due LINQ query
public List<ReportSummary> ListProducer()
{
return (from p in Context.stdReports
group p by new { p.txt_company, p.int_agencyId }
into g
select new ReportSummary
{
PKi = g.Key.int_agencyId,
Name = g.Key.txt_company,
Sum = g.Sum(foo => foo.lng_premium),
Count = g.Count()
}).OrderBy(q => q.Name).ToList();
}
public List<ReportSummary> ListCarrier()
{
return (from p in Context.stdReports
group p by new { p.txt_carrier, p.int_carrierId }
into g
select new ReportSummary
{
PKi = g.Key.int_carrierId,
Name = g.Key.txt_carrier,
Sum = g.Sum(foo => foo.lng_premium),
Count = g.Count()
}).OrderBy(q => q.Name).ToList();
}
My Mind è il disegno di un vuoto su come potrei essere in grado di riunire questi due
Se si utilizzano i metodi di estensione (notazione punto) anziché la notazione SQL come query, entrambe le query avranno lo stesso aspetto tranne per il lambda che si passa in gruppo per. Con uno sguardo superficiale sto indovinando solo le modifiche di 'Func keySelector', vedi [IEnumerable.GroupBy] (http://msdn.microsoft.com/en-us/library/bb534501 (v = vs. 100) .aspx) su msdn. Quindi avresti un 'Func myKeySelector' e il resto è un codice comune. Mi chiedo se sto dando abbastanza senso, il suo waay a tarda notte e io sono su un nuovo OSX quindi non posso scrivere alcun C# in questo momento. –
gideon
È possibile utilizzare la struttura dell'espressione per creare query dinamiche. –