じぶんメモ

プログラミングのメモ、日常のメモとか。

Linqを使ったListからの値の抽出

Linqを使ってListや配列の抽出を簡単に行える。 ラムダ式を使った方がシンプルに記述できる。

値の抽出

VBの場合

    Dim records as New List(Of Person)

    For i = 0 To 10
        Dim man As New Person("Tom", i )  ' Personクラス(名前、番号)
        records.Add(man)
    Next

    ' LINQによる問い合わせ(番号が5未満のレコードのみ抽出)
    Dim selectedRecord = _
        From rcd In records _
        Where rcd.number < 5 _
        Select red

    ' ラムダ式を使った場合(番号が5未満のレコードのみ抽出)
    Dim selectedRecord = cd.Where(Function(rcd) red.number < 5).ToList()

C#の場合

    // ラムダ式を使った場合ドのみ抽出)
    var selectedRecords = records.Where(red => cd.number < 5).ToList();

OrderBy

    ' 条件1の昇順、条件2の昇順
    Dim selectedRecord = cd.Where(Function(rcd) red.number < 5).
                                               OrderBy.(Function(rcd) 条件1).
                                               ThenBy(Function(rcd) 条件2).ToList()

    ' 条件1の昇順、条件2の昇順
    Dim selectedRecord = cd.Where(Function(rcd) red.number < 5)
                                               .OrderByDescending(Function(rcd) 条件1)
                                               .ThenByDescending(Function(rcd) 条件2)
                                               .ToList()

抽出数を指定

    ' 4件目から3件のみ抽出する。
    Dim selectedRecord = cd.Where(Function(rcd) red.number < 5).Skip(4).Take(3).ToList()