Visual Basic サンプル集 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
Listの検索
1.文字列のListから "Eagle" を1つ検索する例
Containsメソッドで値が含まれているか確認できます。







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メソッドなどで条件をつけて値を検索できます。







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で導入されたためこの例をそのまま実行することはできません。
(






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で導入されたためこの例をそのまま実行することはできません。
(






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ではラムダ式部分で別で定義したメソッド等を呼び出すことで複雑な条件やロジックを指定することが可能。