2012-04-24 11 views
4

linqクエリを使用して、どのようにgroupby関数にパラメータを渡すことができますか?ユーザーの選択に応じて、別にグループ分けされます。Linq - GroupBy()へのSQLパッシングパラメータ

var query = (from to in OrderQuery 
        group to by to.FromDateUtc into groupedDate 
        let grouped = groupedDate.GroupBy(o => o.Name) 

私は別のgroupby値を渡したいと思います。何か案が?

乾杯

+0

あなたはBY GROUP SELECT * FROM 'のような何かをしようとしています。この記事を見てみましょうしようとしている場合, '? – Rahul

答えて

2

一般的に言えば、これについては異なるクエリが必要です。同じことが、ユーザーの選択に基づいて異なるWHEREWhere(...)句を構築するために行く:

var query = OrderQuery; 
if (userSelection == "GroupByName") { 
    query = from to in query 
      group to by to.FromDateUtc into groupedDate 
      let grouped = groupedDate.GroupBy(o => o.Name); 
} 
else if (userSelection == "GroupBySomethingElse") { 
    query = from to in query 
      group to by to.FromDateUtc into groupedDate 
      let grouped = groupedDate.GroupBy(o => o.SomethingElse); 
} 

あなたはqueryにグループ化を適用する前に、できるだけ多くの共通ロジックを準備することをお勧めします。 LINQは遅延実行を使用するため、結果を列挙する前に必要なだけqueryを変更することができ、パフォーマンスが低下することはありません。

+0

うーん..興味深い..これは私のクエリのわずか10%です。コピーしてペーストする必要があるようです:( – ove

+0

@overuleまあ、うまくいけません。コピー&ペーストする必要があるのは、グループ化の方法の違いを扱う部分だけです。私は、グループ化を条件付きで適用する前に、すべての結合、フィルタリング、ソートを含むように 'query'を設定する必要があることを言いました。 – Yuck