質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

28384閲覧

C#のListでの特定要素の取得とカウント

OROCHI_TUNGUS

総合スコア31

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2015/04/13 01:11

こんにちは、現在以下のようなデータクラスがあるとします

lang

1class MS_Sakuhin 2{ 3 string msName; 4 string sakuhin; 5}

このクラスはデータの保存に使用します。以下のような形でデータが入ります

lang

1List<MS_Sakuhin> msSakuhin = new List<MS_Sakuhin>(); 2MS_Sakuhin inputData = new MS_Sakuhin(); 3inputData.msName = "ZZガンダム"; 4inputData.sakuhin = "機動戦士ガンダムZZ"; 5msSakuhin.Add(inputData); 6// 以下同様に追加

このListのmsNameはユニークな値でダブりはありませんが、sakuhinにはデータごとに同じ値が入る可能性があります。ここでこのListに対して以下の操作をしたいと考えています

1.sakuhinの種類を数えたい
2.同じsakuhinの値の数を数えたい(例:sakuhin = "機動戦士ガンダムZZ"の場合、msNameが"ZZガンダム"、"フルアーマーZZガンダム"、"キュベレイ"、"ザクⅢ改"、"キュベレイMk-Ⅱ(赤)"、"キュベレイMk-Ⅱ(黒)"がいる場合、msNameの種類が何種類あるかカウントしたいということになります)

sakuhinでソートしてから同じsakuhinの数を数えれば出せるのですが、ループが必要なのでもっとスマートに求める関数があるのなら教えていただきたく思います

よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

このような処理はLINQを使うと、とても簡単にかけます。

lang

1# 作品を抽出し、重複を除いて、件数を数える 2msSakuhin.Select(x => x.sakuhin).Distinct().Count(); 3 4# 作品でグループ分けして、作品名とグループごとの件数を求める 5msSakuhin.GroupBy(x => x.sakuhin).Select(x => x.Key + ":" + x.Count());

また、

このListのmsNameはユニークな値でダブりはありません

このような場合はmsNameをキーとするDictionaryを検討したほうが良いかもしれません。

投稿2015/04/13 01:55

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

OROCHI_TUNGUS

2015/04/13 02:40

ありがとうございました。Dictionaryですが、ソートしたりクラスの要素が増えたりする可能性があるので今回はListで行いました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問