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

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

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

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

Q&A

解決済

1回答

2420閲覧

C# リストから文字列の抽出し、並べかえたい

okiasu

総合スコア14

C#

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

0グッド

0クリップ

投稿2017/05/16 14:26

編集2017/05/16 14:42

現在、C#の勉強中の初心者です。
C#のListから文字列を抽出したいのですが、
その方法がわかりません。

###ソースコード

C#

1List<string> list = new List<string>(); 2 list.Add("A 山本"); 3 list.Add("B 田中"); 4 list.Add("C 田中"); 5 list.Add("D 山本"); 6 list.Add("E 田中"); 7 8 foreach (string s in list) 9 { 10 Console.WriteLine(s); 11 }

###どう改善したいか…
上記から山本と田中に分けるために、
文字列を指定して抽出し、

B 田中
C 田中
E 田中
A 山本
D 山本

と並び替え出力したい

ネットや書籍を参考に探しましたが、うまくいきません。
何か良い方法があれば、ご教授願います。
宜しくお願い致します。

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

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

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

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

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

Zuishin

2017/05/16 14:30

抽出ではわかりません。どんな出力を求めていますか?
okiasu

2017/05/16 14:38

すみません。Console.WriteLineで出力した時に、 B 田中 C 田中 E 田中 A 山本 D 山本 と並べたいです。
guest

回答1

0

ベストアンサー

山本と田中の順序が逆になりますが。

C#

1var items = list.GroupBy(a => a.Split(' ').Skip(1).First()).SelectMany(a => a); 2foreach (var item in items) Console.WriteLine(item);

投稿2017/05/16 14:48

Zuishin

総合スコア28656

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

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

Zuishin

2017/05/16 14:49

田中を先にするなら var items = list.GroupBy(a => a.Split(' ').Skip(1).First()).Reverse().SelectMany(a => a);
Zuishin

2017/05/16 14:58 編集

a.Split(' ') で "A 山本" が "A", "山本" という二つの文字列に分かれます。 Skip(1).First() で "A" が捨てられて "山本" が残ります。 同様にすべての要素に於いてスペースで区切られた二番目の文字列が残ります。 GroupBy() で "山本" "田中" をキーに全ての要素がグループ分けされます。 SelectMany() でグループがばらされます。
okiasu

2017/05/16 15:28

出力出来ました! 本当にありがとうございます!
okiasu

2017/05/16 15:39

詳細に渡る、解説もとても分かり易いです。 感謝申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問