[解決済み] LINQを使用してデータをPivotすることは可能ですか?
2022-04-20 02:38:14
質問
LINQを使用して、以下のレイアウトからデータをピボットすることが可能かどうか疑問に思っています。
CustID | OrderDate | Qty
1 | 1/1/2008 | 100
2 | 1/2/2008 | 200
1 | 2/2/2008 | 350
2 | 2/28/2008 | 221
1 | 3/12/2008 | 250
2 | 3/15/2008 | 2150
をこのようなものに変更します。
CustID | Jan- 2008 | Feb- 2008 | Mar - 2008 |
1 | 100 | 350 | 250
2 | 200 | 221 | 2150
解決方法は?
こんな感じ?
List<CustData> myList = GetCustData();
var query = myList
.GroupBy(c => c.CustId)
.Select(g => new {
CustId = g.Key,
Jan = g.Where(c => c.OrderDate.Month == 1).Sum(c => c.Qty),
Feb = g.Where(c => c.OrderDate.Month == 2).Sum(c => c.Qty),
March = g.Where(c => c.OrderDate.Month == 3).Sum(c => c.Qty)
});
GroupBy
のLinqはSQLと同じようには動きません。 SQLでは、キーと集約を取得します(行/列の形)。 Linqでは、キーとキーの子としての要素(階層型)が取得されます。 ピボットを行うには、階層を任意の行/列の形に投影し直す必要があります。
関連
-
[解決済み] LINQを使用してList<T>から要素を削除する
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] LINQのGroup by
-
[解決済み] DataTableに対するLINQクエリ
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] IEnumerable<T>のforeachのLINQでの等価性
-
[解決済み] LINQ集計アルゴリズム説明
-
[解決済み】Lambda式でOrderBy descending?
-
[解決済み] LINQ-to-SQLとストアドプロシージャの比較?[クローズド]
-
[解決済み] LINQ: 区分された値
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] C# LINQ リスト内の重複を検索する
-
[解決済み】Lambda式でOrderBy descending?
-
[解決済み】LINQ グループバイをディクショナリーオブジェクトに入れる
-
[解決済み】Entity Framework。このコマンドに関連するオープンなDataReaderがすでに存在します。
-
[解決済み] エンティティフレームワークのLinqクエリInclude()複数の子エンティティ
-
[解決済み] LINQ を使用して、オブジェクトのリストから一意のプロパティのリストを取得するにはどうすればよいですか?
-
[解決済み] LINQを使用してデータをPivotすることは可能ですか?
-
[解決済み] IQueryableとIEnumerableの違いは何ですか[重複]。
-
[解決済み] LINQ: 区分された値
-
[解決済み] LINQ OrderByとThenByの比較