読者です 読者をやめる 読者になる 読者になる

Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

LINQを学んでみよう

C# Programming
スポンサードリンク

f:id:fa11enprince:20160131173315j:plain
最近、C#が好きになりかけています。
理由は楽ちんだから。
C#をやろうとすると避けて通れないものにLINQがあります。
別に使わなくてもかけるんだけど、
やっぱりLINQを知らないとほかのソースコードも読めないことがしばしば。
ちょっと勉強しないと使えるようにならないっぽい代物なので、
勉強しましょうってことでおすすめツールの紹介とプチ解説です。

LINQとは

まじめに解説しません。とりあえず、必要最低限でデータベースを使う気がないなら、
LINQ to ObjectとLINQ to XMLさえ学んでおけばOKでしょう。
今回はLINQ to Objectについて学びます。

必要なツール

Visual Studio!!
そりゃそうだって言われるので、今回はそれではなく、
https://www.linqpad.net/
LINQPadなるものがあるのでこれを使いましょう!

LINQ to Objectとは

C#のCollectionの処理ライブラリです。
ListやらDictionaryやらごにょごにょできます。
以上w
使うと便利になりますよってことで積極的に使いましょう。

ざっくり文法

省略できるのもいくつかありますが、まずはとりあえず基本形を。

var query = from [クラス名] 範囲変数名 in コレクション
    where [条件]
    select 範囲変数名

です。

LINQPadで書いてみます。

LINQPadをたちあげたら、上側のLanguageをC# Programに変えてあげて、
プログラムを打ち込みます。

public class 成績
{
    public string 学籍番号 { get; set; }
    public string 教科 { get; set; }
    public int    点数 { get; set; }
}

void Main()
{
    var 全成績 = new List<成績>() {
        new 成績 {学籍番号="S-0001", 教科="国語", 点数=90},
        new 成績 {学籍番号="S-0001", 教科="数学", 点数=80},
        new 成績 {学籍番号="S-0002", 教科="国語", 点数=70},
        new 成績 {学籍番号="S-0002", 教科="数学", 点数=70},
        new 成績 {学籍番号="S-0003", 教科="国語", 点数=20},
        new 成績 {学籍番号="S-0003", 教科="数学", 点数=50},
    };

    var query = from 成績 範囲 in 全成績
        where 範囲.点数 >= 80
        select 範囲;
    foreach (var v in query)
    {
        Console.WriteLine(v);
    }
}

実行ボタンを押すと、割とゴージャスな結果が出ます。
簡単だね!

f:id:fa11enprince:20160329021330p:plain

Listの初期化の書き方言語によって微妙に違うから間違えますね。

間違い例
var 全成績 = new List<成績> {
    new {"S-0001","国語", 90},
    ...
};

とか間違った書き方しててこれでいけないんだっけ???とか思いググってしまいました。
まだまだC#初心者ですね。