を照会あり、異なるフィールドで何度も同じことをしなければならないは、これら二つのLINQでの重複を減らすためにどのような方法が報告書の束を構築
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();
}
私の心がどのように私はかもしれないの空白を描いていますこれら2つを一緒に持って来ることができます。
SQLのようなクエリ表記法の代わりに拡張方法(ドット表記法)を使用すると、グループ化したラムダを除き、両方のクエリが同じように見えます。私はちょうど 'Func keySelector'の変更を推測しています。[IEnumerable.GroupBy](http://msdn.microsoft.com/en-us/library/bb534501(v = vs。 100).aspx)をmsdnに追加します。したがって、あなたは 'Func myKeySelector'を持ち、残りは共通コードです。私が十分な意味を持っているのかどうか、夜遅くまで待っていて、私は新しいOSX上にいるので、今はC#を書くことはできません。 –
gideon
式ツリーを使用して動的クエリを構築できます。 –