Aufbau einer Reihe von Berichten zu verringern, haben die gleiche Sache immer und immer wieder mit verschiedenen BereichenGibt es eine Möglichkeit Vervielfältigung in diesen beiden LINQ-Abfragen
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, wie eine leere geht zu tun könnte ich in der Lage sein, diese beiden zusammenzubringen.
Wenn Sie die Erweiterungsmethode (Punktnotation) anstelle der SQL-ähnlichen Abfragenotation verwenden, sehen beide Abfragen gleich aus, mit Ausnahme des Lambda, an dem Sie in die Gruppe übergehen. Mit einem kursorischen Blick denke ich nur die 'Func keySelector' Änderungen, siehe [IEnumerable.GroupBy] (http://msdn.microsoft.com/en-us/library/bb534501 (v = vs. 100) .aspx) auf msdn. Sie hätten also eine 'Func myKeySelector' und der Rest ist gemeinsamer Code. Ich frage mich, ob ich genug Sinn habe, es ist spät und spät und ich bin auf einem neuen OSX, also kann ich momentan kein C# schreiben. –
gideon
Sie können die Ausdrucksbaumstruktur verwenden, um dynamische Abfragen zu erstellen. –