[解決済み】groupbyとcountを使ったLINQ
質問
とても簡単なことなのですが、困っています。 このようなデータセットがあるとします。
UserInfo(name, metric, day, other_metric)
と、このサンプルデータセット。
joe 1 01/01/2011 5
jane 0 01/02/2011 9
john 2 01/03/2011 0
jim 3 01/04/2011 1
jean 1 01/05/2011 3
jill 2 01/06/2011 5
jeb 0 01/07/2011 3
jenn 0 01/08/2011 7
メトリクスを順番に(0,1,2,3...)カウントの総発生回数で並べたテーブルを取り出したいのですが。つまり、このセットから、最終的には
0 3
1 2
2 2
3 1
LINQの構文に取り組んでいますが、groupbyとcountをどこに置くかで行き詰っています...。 何かいい方法はないでしょうか?
POST編集:投稿された回答は、常に異なるカウント数で1つのレコードを返すため、動作させることができませんでした。しかし、LINQ to SQLのサンプルを作成し、動作させることができました。
var pl = from r in info
orderby r.metric
group r by r.metric into grp
select new { key = grp.Key, cnt = grp.Count()};
この結果、「メトリクス」とそれぞれに関連するユーザー数を持つレコードの順序付きセットを得ることができました。私は明らかにLINQの初心者ですが、素人目にはこのアプローチは純粋なLINQのアプローチと非常に似ているように見えますが、異なる答えを与えてくれました。
どのように解決するのですか?
を呼び出した後
GroupBy
を実行すると、一連のグループ
IEnumerable<Grouping>
ここで、各グループ化自体は
Key
は、グループを作成するために使用され、また
IEnumerable<T>
は、元のデータセットにあるあらゆる項目の を呼び出すだけです。
Count()
をグループ化することで、小計を得ることができます。
foreach(var line in data.GroupBy(info => info.metric)
.Select(group => new {
Metric = group.Key,
Count = group.Count()
})
.OrderBy(x => x.Metric))
{
Console.WriteLine("{0} {1}", line.Metric, line.Count);
}
> すばらしい迅速な回答でしたが、最初の行、特に "data.groupby(info=>info.metric)" で少し問題があります。
すでにいくつかのリスト/配列を持っていると仮定します。
class
のようなものです。
class UserInfo {
string name;
int metric;
..etc..
}
...
List<UserInfo> data = ..... ;
をすると
data.GroupBy(x => x.metric)
これは、各要素について
x
で定義されるIEnumerableの中で
data
を計算し、それを
.metric
次に、同じメトリックを持つすべての要素をグループ化して
Grouping
を返し
IEnumerable
を生成します。例のデータセット
<DATA> | Grouping Key (x=>x.metric) |
joe 1 01/01/2011 5 | 1
jane 0 01/02/2011 9 | 0
john 2 01/03/2011 0 | 2
jim 3 01/04/2011 1 | 3
jean 1 01/05/2011 3 | 1
jill 2 01/06/2011 5 | 2
jeb 0 01/07/2011 3 | 0
jenn 0 01/08/2011 7 | 0
とすると、groupbyの後に以下のような結果になります。
(Group 1): [joe 1 01/01/2011 5, jean 1 01/05/2011 3]
(Group 0): [jane 0 01/02/2011 9, jeb 0 01/07/2011 3, jenn 0 01/08/2011 7]
(Group 2): [john 2 01/03/2011 0, jill 2 01/06/2011 5]
(Group 3): [jim 3 01/04/2011 1]
関連
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] SelectとSelectManyの違い
-
[解決済み] LINQのGroup by
-
[解決済み] DataTableに対するLINQクエリ
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] LINQ集計アルゴリズム説明
-
[解決済み] pandas GroupByを使ってグループごとの統計情報(カウント、平均値など)を取得する?
-
[解決済み] LINQとLambdaでJoin/Whereを実現する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】LINQ グループバイをディクショナリーオブジェクトに入れる