この知恵ノートを「知恵コレクション」に追加しました。
追加した知恵ノートはMy知恵袋の「知恵コレクション」ページで確認できます。
「知恵コレクション」に登録済みです。
再登録しました。
追加に失敗しました。
ノートに戻り、もう一度やり直してください。
すでに1,000件のノートが登録されています。
新しく追加したい場合は、My知恵袋の「知恵コレクション」ページで登録されているノートを削除してください。
追加できませんでした。
ノートは削除されました。
知恵コレに追加する:0人
<C#> OrderBy() メソッドを使って、文字列配列を昇順でソートする。
ライター:abiko_tetuさん(最終更新日時:2013/1/2)投稿日:2012/12/17 アドバイス受付中!
- ナイス!:
0
- 閲覧数:3621
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
C#
OrderBy() メソッドを使って、文字列配列を昇順でソートする。
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
「<C#> 配列やリストに対するソートや検索」における一連の説明(知恵ノート)において、ここでは、「<C#> OrderBy() メソッドを使って、文字列配列を昇順でソートする」について説明します。
総合の目次
本ページを含めた関連事項の総合目次です。
http://note.chiebukuro.yahoo.co.jp/detail/n137674
関連サンプル
本サンプルと関連性のあるサンプルです。
すなわち、次回以降のサンプルです。
<ステップ1>
「OrderBy() メソッドを使って、文字列配列を昇順でソートする」
今回のサンプルです。
<ステップ2>
「OrderByDescending() メソッドを使って、文字列配列を昇順でソートする」
http://note.chiebukuro.yahoo.co.jp/detail/n137688
<ステップ3>
「OrderBy() メソッドを使って、ユーザー定義クラスの配列を昇順でソートする」
http://note.chiebukuro.yahoo.co.jp/detail/n137689
<ステップ4>
「OrderByDescending() メソッドを使って、ユーザー定義クラスの配列を昇順でソートする」
http://note.chiebukuro.yahoo.co.jp/detail/n137690
<ステップ5以降>
その他にも関連サンプルは続きます。
(後程改めて紹介します)
はじめに
本サンプルは、データーのソートを行なうサンプルです。
ソートする対象データーは、単純に文字列を配列にしたものとします。
その文字列配列を、OrderBy() と言うメソッドを使って、昇順でソートします。
関連サンプルと比べた特徴
一連の関連サンプルでは、OrderBy() メソッド や OrderByDescending() メソッド を使ってソートを行ないます。
具体的内容は、下記の通りです。
<ステップ1>
「OrderBy() メソッドを使って、文字列配列を昇順でソートする」
ソートする対象データーは、まず単純に、文字列を配列にしたものとします。
その文字列配列を、OrderBy() と言うメソッドを使って、昇順でソートします。
<ステップ2>
「OrderByDescending() メソッドを使って、文字列配列を昇順でソートする」
ソートする対象データーは、単純に文字列を配列にしたものとします。
その文字列配列を、OrderByDescending() と言うメソッドを使って、降順(逆順)でソートします。
<ステップ3>
「OrderBy() メソッドを使って、ユーザー定義クラスの配列を昇順でソートする」
ソートする対象データーは、ユーザー定義クラスを配列にしたものとします。
すなわち、自分で定義したクラスの配列ですので、ステップ1、2(文字列の配列)よりも、実用性の高いプログラミングに適応させやすいです。
そのユーザー定義クラスの配列を、OrderBy() と言うメソッドを使って、昇順でソートします。
<ステップ4>
「OrderByDescending() メソッドを使って、ユーザー定義クラスの配列を昇順でソートする」
ソートする対象データーは、ユーザー定義クラスを配列にしたものとします。
すなわち、自分で定義したクラスの配列ですので、ステップ1、2(文字列の配列)よりも、実用性の高いプログラミングに適応させやすいです。
その文字列配列を、OrderByDescending() と言うメソッドを使って、降順(逆順)でソートします。
<ステップ5以降>
その他にもソートの関連サンプルは続きます。
しかし、ステップ5以降のサンプルの概要を、ここで説明すると混乱するだけです。
よって、ステップ5以降の概要は、後のステップ5で説明します。
サンプルコード
ここで取り上げるサンプルは、なるべく複雑にならない範囲で、ソートを確かめられるものとします。
本サンプの仕様概要
プログラムを実行せると、テキストボックスに元データー(ソートする前のデーター)が表示されます。
ボタンを押すと、ソートが行なわれて、その処理結果がテキストボックスに表示されます。
フォームデザイン等の前準備
コードを記述する前に、フォームのデザイン作成などの、以下の前準備を行なって下さい。
<プロジェクトの作成>
本サンプルの確認用に、新規にプロジェクトを作成して下さい。
プロジェクトの種類は、「Windowsフォームアプリケーション」です。
<フォームのデザイン>
デザイン画面で、テキストボックス(TextBox)を1個と、ボタン(button)を1個貼り付けて下さい。
<テキストボックスの複数行化>
テキストボックスは、デフォルトでは1行用になっています。
しかし、本サンプルでは、複数行の文字を扱いたいので、以下の操作で、テキストボックスを複数行対応にして下さい。
まず、先程貼り付けたテキストボックス textBox1 を選択状態にして下さい(すなわち、デザイン画面上のテキストボックス textBox1 をクリックする)。
そうすると、テキストボックスの右上に、小さな三角形のマークが表示されます。
それをクリックすると Multiline と言う表記のチェックボックスが表示されます。
そのチェックボックスにチェックを入れると、複数行対応になります。
あとは、デザイン画面のチェックボックスをマウス操作で、縦幅を広げて下さい。
<イベントプロシージャの作成>
デザイン画面のフォーム(無地の部分)をダブルクリックして、Form1_Load() メソッド を作って下さい。
また、デザイン画面で先ほど貼り付けたボタン1(button1)をダブルクリックして、button1_Click() メソッドを作って下さい。
Formクラスのコード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
// OrderBy() メソッドを使って、文字列配列を昇順でソートする。
namespace SortStringArrayWithAscendingMethod
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// フルーツ名列挙配列
string[] FruitsList = { "cherry", "apple", "blueberry" };
//============
// フォーム起動時に実行されるイベントプロシージャ
private void Form1_Load(object sender, EventArgs e)
{
// 初期データーを表示
foreach (string FruitWork in FruitsList)
{
textBox1.Text += FruitWork + " ";
}
}
//============
// ボタンクリック時に実行されるイベントプロシージャ
private void button1_Click(object sender, EventArgs e)
{
// 昇順ソート
IEnumerable<string> query = FruitsList.OrderBy(_ => _);
// テキストボックスを初期化
textBox1.Text = "";
// 結果表示
foreach (string FruitWork in query)
{
textBox1.Text += FruitWork + " ";
}
}
}
}
コードの解説
ソート用メソッドのOrderBy(_ => _) の引数の内容が、不明と感じると思います。
引数の使い方は、後のサンプル(ステップ3、4での、ユーザー定義クラスの配列のソートのサンプル)でわかります。
ここでは、このようなメソッドでソートが可能であることだけを認識して下さい。
なお、後のサンプルで、OrderBy() メソッドの引数の使い方を理解した後に、もう一度本サンプルを見て下さい。
そうすると、引数内の大まかな構造は理解が可能になりますが、引数内にある _ が、まだ不明と感じると思います。
この _ は、任意のオブジェクトを示す、抽象的なオブジェクトです。
取りあえず、後のサンプルも続けて見て下さい。
それでも理解が難しい場合は、「こう言うものだ」と割り切って、そのまま活用するようにして下さい。
実行結果
ボタンをクリックすると、ソートした結果が表示されます。
ソート前の元データーが表示されているフォーム
ボタンをクリックした後の、ソートされたデーターが表示されているフォーム
アドバイス(このノートのライターへのメッセージ)を送る
このノートはどうでしたか? いいと思ったことや、こうしたらもっとよくなるといったメッセージを送りましょう! ノートの内容やライターについて質問がある場合は、Q&Aから質問してみましょう
アドバイスを送るには、
Yahoo! JAPAN IDでのログインおよび
Yahoo!知恵袋の利用登録が必要です。
感想アドバイス履歴
-
現在アドバイスはありません
このノートに関するQ&A
このノートに関するQ&Aは、まだありません。