買って東北支援「復興デパートメント」

Yahoo!知恵袋

IDでもっと便利に新規取得

ログイン

  • Yahoo! JAPAN
  • ヘルプ
  • トップ
  • カテゴリ
  • ランキング
  • Q&A一覧
  • 回答コーナー

いますぐ利用登録!

Q&A 知恵ノート

条件を指定

質問する

知恵ノートを書く


現在位置:
知恵袋トップ
>
コンピュータテクノロジーカテゴリ選択
知恵袋トップ
エンターテインメントと趣味
暮らしと生活ガイド
インターネット、PCと家電
健康、美容とファッション
ビジネス、経済とお金
生き方と恋愛、人間関係の悩み
子育てと学校
職業とキャリア
マナー、冠婚葬祭
ニュース、政治、国際情勢
教養と学問、サイエンス
スポーツ、アウトドア、車
地域、旅行、お出かけ
コンピュータテクノロジー
Yahoo! JAPAN
おしゃべり、雑談
その他
>
プログラミング >
C言語関連 > <C#> OrderBy() ...


ここから本文です

この知恵ノートを「知恵コレクション」に追加しました。

追加した知恵ノートはMy知恵袋の「知恵コレクション」ページで確認できます。

「知恵コレクション」に登録済みです。

再登録しました。

追加に失敗しました。

ノートに戻り、もう一度やり直してください。

すでに1,000件のノートが登録されています。

新しく追加したい場合は、My知恵袋の「知恵コレクション」ページで登録されているノートを削除してください。

追加できませんでした。

ノートは削除されました。

知恵コレに追加する:0人

<C#> OrderBy() メソッドを使って、文字列配列を昇順でソートする。

ライター:abiko_tetuさん(最終更新日時:2013/1/2)投稿日:2012/12/17 アドバイス受付中!

  • ナイス!:

    0

  • 閲覧数:3621
  • ノート
  • アドバイス
  • 関連Q&A
  • 履歴

印刷用のページを表示する

*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

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() メソッドの引数の使い方を理解した後に、もう一度本サンプルを見て下さい。

そうすると、引数内の大まかな構造は理解が可能になりますが、引数内にある _ が、まだ不明と感じると思います。

この _ は、任意のオブジェクトを示す、抽象的なオブジェクトです。

取りあえず、後のサンプルも続けて見て下さい。

それでも理解が難しい場合は、「こう言うものだ」と割り切って、そのまま活用するようにして下さい。





実行結果


ボタンをクリックすると、ソートした結果が表示されます。


 実行結果1

ソート前の元データーが表示されているフォーム

 

 

 

 実行結果2

ボタンをクリックした後の、ソートされたデーターが表示されているフォーム

 

 

 


 

  • ナイス!0
  • 違反報告

アドバイス(このノートのライターへのメッセージ)を送る

このノートはどうでしたか?  いいと思ったことや、こうしたらもっとよくなるといったメッセージを送りましょう! ノートの内容やライターについて質問がある場合は、Q&Aから質問してみましょう

アドバイスを送るには、
Yahoo! JAPAN IDでのログインおよび
Yahoo!知恵袋の利用登録が必要です。

利用登録ナビへ

感想アドバイス履歴

  • 現在アドバイスはありません

このノートに関するQ&A

このノートに関するQ&Aは、まだありません。

このノートについて質問する

このノートについてライターの方に質問できます。

※ライターの方から必ず回答をいただけるとは限りません

※別ウィンドウで開きます

あなたにおすすめの知恵ノート

  • PHPで連想配列を使った文字列の取得
  • <C#> LINQ to Object を使って、文字...
  • 配列と文字列とポインタ
  • <C#> OrderBy() メソッドを使っ...
  • <C#> LINQ to Object を使って、ユーザー定義クラ...

あなたにおすすめのQ&A

  • C#の場合、文字列配列の宣言の仕方は string[] hairetsu = new string[] {"a","b&q...
  • C言語で配列内の全角文字列を出力する方法を教えてください。 C言語で全角文字列を出力をしたいので...
  • C言語で、文字列を格納する配列を初期化する、良い方法を教えてください。 以下のような方法を見つけ...
  • C言語で、2次元配列(多次元配列)にキーボードからscanfを使って、文字列を入力する方法はありません...
  • C++で、文字列配列の中に指定の文字列があれば、そのインデックスを返し、存在しなければ-1を返す関...

このページのトップへ

PR

この知恵ノートのライター

グレード

グレード知恵ノートのグレード:1-3

知恵袋マスター

abiko_tetuさん男性

=== しばらく、回答リクエストの受け付けを制限します。 知恵ノ...[続きを見る]

その他の知恵ノート(2025件)
a00 <C#> クラス化を行なう前...
c00 <C#> キャラクターをクラ...
b00 <C#> キャラクターをクラ...
bbb03 「<C#> キャラクターを...
bbb02 「<C#> キャラクターを...

[ノート一覧]

Yahoo!予約 飲食店 忘年会特集

知恵ノートランキング

  • 閲覧数
  •  
  1. 1位超簡単!NHK受信料契約を、...
  2. 2位【2014年最新版】YouTubeの動画...
  3. 3位【MH4G】発掘武器の性能パター...
  4. 4位今更だけどDVDコピーの簡単なや...
  5. 5位女性に歌ってほしいカラオケ曲...

[一覧]

ランキング対象日:2014/11/12

ピックアップ

【面白化学】炭酸飲料を吹くの...
振った炭酸を吹かさないで開ける方法!思わず落としてしまっ...
【2014年〜2016年版】おもな年...
おもな年中行事の「新暦」と「新暦の月遅れ」と「旧暦」の違...
【スマホを狙う架空請求の対処...
最近は、スマートフォンを狙っての詐欺が大変に増えておりま...

[役に立つノートをもっと見る]

知恵ノートを書いてみませんか?知恵ノートの書き方はこちら

知恵ノートとは?

役立つ知恵情報は、Yahoo!知恵袋公式Twitter@yahoochiebukuroをフォロー
知恵袋動画コンテスト
本文はここまでです このページの先頭へ

お得情報

花王ヘルシアキャンペーン!
体脂肪が気になる方に。抽選で
お得に使えるクーポンプレゼント!
『ネスレ_ふわラテ_まったり深い味』
人気商品をお試しできるチャンス♪
60万人突破キャンペーン!(モラタメ)

その他のキャンペーン

Yahoo!Japan

Yahoo!検索データ 急上昇ワード

プライバシーポリシー - 利用規約 - ガイドライン - サイトマップ - ヘルプ・お問い合わせ

JASRAC許諾番号:9008249113Y38200

Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.