は、LINQのコードを考えてみましょう:パラメータとして渡された列名でLINQグループ - LINQ TO SQL
var objs = (ClientsDB.Context.ClientProcessed.GroupBy(grp => new
{
City = grp.City,
Day = grp.Insert_Date.Value.Day,
Month = grp.Insert_Date.Value.Month,
Year = grp.Insert_Date.Value.Year
})....
var objs = (ClientsDB.Context.ClientProcessed.GroupBy(grp => new
{
Department = grp.Department,
Day = grp.Insert_Date.Value.Day,
Month = grp.Insert_Date.Value.Month,
Year = grp.Insert_Date.Value.Year
})....
var objs = (ClientsDB.Context.ClientProcessed.GroupBy(grp => new
{
State = grp.State,
Day = grp.Insert_Date.Value.Day,
Month = grp.Insert_Date.Value.Month,
Year = grp.Insert_Date.Value.Year
})....
どのように私は、文字列として渡された特定の列でGROUPBYを行っていることができますか?例えば
:
String grpByParam = "City"; // grpByParam = "State"; // String grpByParam = "Department";
そして、LINQクエリにそのPARAMを渡し、代わりにLINQを複製するのは、すべての今、もう一度照会します。
FYI、LINQ-TO-OBJECTSクエリではなく、メモリではなくDBでフィルタリングを行う必要があることを意味します。
これは可能ですか?
おかげ
この例では、4つの列でグループ分けしています。条件によってそのグループを表す文字列は何でしょうか? – Evk
@Evk:String grpByParam = "City"; // grpByParam = "状態"; // grpByParam = "Department"; – ron
私はそれが可能だと信じていますが、それはそれがそれに値するとは思っていません。あなたは匿名型のダイナミクスのインスタンスを作成する匿名型と式を生成できますが、プレーンなC#コードでは使用できません.Funcを生成する必要があります.Funcはその動的表現でGroupByを呼び出します。ここに私がインターネットhttps://gist.github.com/dcastro/9093000で見つけたタイプと表現の生成のサンプルがあります。可能なクエリごとに型を作成すると、それほどクールではありません。 – Atomosk