不確定な列数で C# と Linq を使用してピボットまたはクロス集計を実行する方法が必要だと思います。ただし、最初の詳細を追加して、どこに行くかを確認します。
< はじめの詳細 >
次の 2 つのフィールドを持つテーブルを想像してください。
string EventName;
Datetime WhenItHappend;
以下の例のようなレポートを生成します。ここでは、EventName でグループ化し、日付と時間枠の数を計算する一連の列を作成します。難しさは明らかに可変数の列です。
Sport Jan 2010Jan 2009Feb 2010Feb 2009
Basketball 26 18 23 16
Hockey 28 19 25 18
Swimming 52 45 48 43
顧客は、レポート用に任意の数の名前付きイベント カウンターを作成できます。関数は常に同じです: 「名前」、「開始」、「終了」。
これをC#で単一のlinq IQueryable結果として組み立てる方法はありますか?
< 終了 開始詳細 >
SQL に関する限り、日付範囲テーブル {TimeFrameName, begin, end} を作成して、それを上記のテーブルに結合しました。begin <= whenItHappened および whenItHappened <= end で、{EventName, TimeFrameName} の適切なセットが生成されました。 count(*) を実行しましたが、行を列に変換してデータを変換する方法がまだ残っていました。