ヘッダー
Visual Basic サンプル集
VB2005 対応 VB2008 対応 VB2010 対応 VB2012 対応 VB2013 対応 VB2015 対応 VB2017 対応 VB2019 対応

Listの検索

1.文字列のListから "Eagle" を1つ検索する例

Containsメソッドで値が含まれているか確認できます。

VB2005 対応 VB2008 対応 VB2010 対応 VB2012 対応 VB2013 対応 VB2015 対応 VB2017 対応 VB2019 対応
Dim list As New List(Of String)

list.AddRange({"Apple", "Banana", "Cat", "Dog", "Eagle", "Fox"})

'▼"Eagle"を検索
If list.Contains("Eagle") Then
    Console.WriteLine("Eagleを発見しました。")
Else
    Console.WriteLine("Eagleは見つかりませんでした。")
End If

2.文字列のListから4文字以下の要素をすべて取得する例

FindAllメソッドやWhereメソッドなどで条件をつけて値を検索できます。

VB2008 対応 VB2010 対応 VB2012 対応 VB2013 対応 VB2015 対応 VB2017 対応 VB2019 対応
Dim list As New List(Of String)

list.AddRange({"Apple", "Banana", "Cat", "Dog", "Eagle", "Fox"})

'▼4文字以下のものを検索
Dim result3 = list.FindAll(Function(s) s.Length < 4)
Console.WriteLine("4文字以下は、" & String.Join(" ", result3))

'これでも同じ
Dim result4 = list.Where(Function(s) s.Length < 4)
Console.WriteLine("4文字以下は、" & String.Join(" ", result4))

VB2010以上ではラムダ式部分は複数行に記述して複雑な条件やロジックを記述することも可能。VB2008ではラムダ式部分で別で定義したメソッド等を呼び出すことで複雑な条件やロジックを指定することが可能。

3.オブジェクトのListをプロパティの値で検索して結果を1つ取得する例

FindメソッドやWhereメソッドで条件を指定して検索できます。

VB2008からVB2013でも使用できますが、この例で使用している null条件演算子(?) がVB2015で導入されたためこの例をそのまま実行することはできません。

(VB2008 対応 VB2010 対応 VB2012 対応 VB2013 対応) VB2015 対応 VB2017 対応 VB2019 対応
Public Class Person
    Public Property Name As String
    Public Property
Age As Integer
End Class

Private Sub Sample3()

    Dim list As New List(Of Person)

    list.Add(New Person With {.Name = "徳川家康", .Age = 20})
    list.Add(New Person With {.Name = "豊臣秀吉", .Age = 22})
    list.Add(New Person With {.Name = "織田信長", .Age = 30})
    list.Add(New Person With {.Name = "足利義政", .Age = 45})

    '▼Age = 30の人物を取得
    Dim result1 As Person = list.Find(Function(p) p.Age = 30)
    Console.WriteLine("Age=30 は、" & result1?.Name)

    'これでも同じ
    Dim result2 As Person = list.Where(Function(p) p.Age = 30).FirstOrDefault
    Console.WriteLine("Age=30 は、" & result2?.Name)

End Sub

VB2010以上ではラムダ式部分は複数行に記述して複雑な条件やロジックを記述することも可能。VB2008ではラムダ式部分で別で定義したメソッド等を呼び出すことで複雑な条件やロジックを指定することが可能。

4.オブジェクトのListから条件をつけて検索して結果をすべて取得する例

FindAllメソッドやWhereメソッドで条件を指定して検索できます。

VB2008からVB2013でも使用できますが、この例で使用している null条件演算子(?) がVB2015で導入されたためこの例をそのまま実行することはできません。

(VB2008 対応 VB2010 対応 VB2012 対応 VB2013 対応) VB2015 対応 VB2017 対応 VB2019 対応
Public Class Person
    Public Property Name As String
    Public Property
Age As Integer
End Class

Private Sub Sample4()

    Dim list As New List(Of Person)

    list.Add(New Person With {.Name = "徳川家康", .Age = 20})
    list.Add(New Person With {.Name = "豊臣秀吉", .Age = 22})
    list.Add(New Person With {.Name = "織田信長", .Age = 30})
    list.Add(New Person With {.Name = "足利義政", .Age = 45})

    '▼Age < 30 の人物をすべて取得
    Dim result3 = list.FindAll(Function(p) p.Age < 30)
    Console.WriteLine("Age<30 は、" & String.Join(" ", result3?.Select(Function(p) p.Name)))

    'これでも同じ
    Dim result4 = list.Where(Function(p) p.Age < 30)
    Console.WriteLine("Age<30 は、" & String.Join(" ", result4?.Select(Function(p) p.Name)))


End Sub

VB2010以上ではラムダ式部分は複数行に記述して複雑な条件やロジックを記述することも可能。VB2008ではラムダ式部分で別で定義したメソッド等を呼び出すことで複雑な条件やロジックを指定することが可能。