.NET開発者のためのブログメディア
【データの並べ替え】LINQのOrderBy句の使用方法とは
2019年11月13日
C#でプログラミングを行う場合には、Language INtegrated Query(略称:LINQ)機能が利用できます。直訳すると、統合言語クエリです。この機能は.NET Framework 3.5から搭載され、データベースやXMLなどのデータに対して、統一化された方法で問い合わせることを可能にします。ここでは、そのLINQ機能の中でも基本的なOrderBy句について紹介します。
- SE
- LINQ機能ってなんだか難しそうですが、やっぱり使わないとダメなのでしょうか?
- PM
- LINQ機能は初心者の方にとっては難しく感じるかもしれませんね。でも慣れてくると使い勝手がいい機能になりますよ。簡単にデータに問い合わせできるので、プログラム全体の質も上がってきます。
目次
LINQ機能におけるOrderBy句を利用してのデータの並び替えとは
データベースに問い合わせを行ったことがある方なら、OrderBy句で連想されるのはデータの並び替えではないでしょうか。LINQ機能でもOrderBy句を利用するとデータを並び替えることができます。
LINQではメソッド構文(ラムダ式を使用)とクエリ構文といった二通りの構文の書き方があります。
以下、クエリ構文を利用したLINQの基本形です。OrderBy句は、Where句とSelect句の間にコーディングします。
1 2 3 4 5 |
クエリの結果を格納する変数 = from データ変数 in データの集合 where 抽出条件 orderby 抽出順序のキー項目 select 抽出するメンバーで構成される新しいクラス ; |
以下、メソッド構文でLINQ機能を利用した時に、OrderBy句と同様にデータを並び替えることが可能なメソッドです。
OrderBy句 | 昇順ソートを行います。 |
OrderByDescending句 | 降順ソートを行います。 |
ThenBy句 | 昇順ソートを行います。ソート条件を複数つけたい場合などで利用します。 |
ThenByDescending句 | 降順ソートを行います。ソート条件を複数つけたい場合などで利用します。 |
LINQ機能におけるOrderBy句の使用方法
ここでは、LINQ機能でのOrderBy句の活用例をメソッド構文とクエリ構文に分けて紹介していきます。
メソッド構文で書くLINQでの活用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public void Test(Form1 form) { using (PubsDataContext pubs = new PubsDataContext()) { var employees = pubs.employee.OrderBy(e => e.job_lvl) .ThenBy(e => e.lname) .Select(e => new { e.job_lvl, e.lname, e.fname, e.emp_id }); form.dataGridView1.DataSource = employees; } } |
クエリ構文で書くLINQでの活用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public void Test(Form1 form) { using (PubsDataContext pubs = new PubsDataContext()) { var employees = from e in pubs.employee orderby e.job_lvl , e.lname select new { e.job_lvl, e.lname, e.fname, e.emp_id }; form.dataGridView1.DataSource = employees; } } |
- SE
- OrderBy句やWhere句などSQLを利用したことがある方なら見覚えのある単語がけっこうLINQ機能には出てきますが、LINQとSQLは同じなのでしょうか?
- PM
- LINQとSQLは全くの別物ですよ。 C#独自の構文ですのでSQLとは混在しないようにしましょうね!
OrderBy句を利用して、出力順序を保証しましょう
クエリを実行してデータを複数件取得できたら、どうしても並び替えが必要となってきます。OrderBy句を使用しないとデータの出力順は保証されません。1件だけの取得で利用する必要はないですが、複数件出力する場合は、OrderBy句を積極的に活用していくことを心がけましょう。