VB.NET List内を検索する

List内に指定された文字列、または数値があるかどうか検索する方法です。

Containsメソッドを使う方法

Dim list As New List(Of String)()
list.Add("さんま")
list.Add("しゃけ")
list.Add("カツオ")

Dim b As Boolean

b = list.Contains("さんま")

If b = True Then
    Console.WriteLine("List内に「さんま」は存在します")
Else
    Console.WriteLine("List内に「さんま」は存在しません")
End If

b = list.Contains(“さんま”) と書くと、
Listの中に”さんま”が存在すれば、Trueが返り、
Listの中に”さんま”が存在しなければ、Falseが返ります。

IndexOfメソッドを使う方法

Dim list As New List(Of String)()
list.Add("さんま")
list.Add("しゃけ")
list.Add("カツオ")

Dim i As Integer

i = list.IndexOf("さんま")

If 0 <= i Then
    Console.WriteLine("「さんま」のインデックス番号は{0}です", i)
Else
    Console.WriteLine("List内に「さんま」は存在しません")
End If

i = list.IndexOf(“さんま”) と書くと、
List内に”さんま”が存在するかどうか検索し、
存在すれば、そのインデックス番号を返します。

Listはインデックス番号が0から始まるので、
list(0)が”さんま” list(1)が”しゃけ” list(2)が”カツオ”になります。
なので、インデックス番号として0が返ります。

もし、List内に”さんま”が存在しない場合は、-1を返します。

IndexOfメソッドは、List内を先頭から順番に検索していきます。

List内を末尾から検索したい場合は、LastIndexOfメソッドを使用します。
速度重視のデータ検索が必要な場合は、どちらを使うか検討して下さい。

スポンサーリンク

BinarySearchメソッドを使う方法

Dim list As New List(Of String)()
list.Add("さんま")
list.Add("しゃけ")
list.Add("カツオ")

list.Sort()

Dim i As Integer

i = list.BinarySearch("さんま")

If 0 <= i Then
    Console.WriteLine("「さんま」のインデックス番号は{0}です", i)
Else
    Console.WriteLine("List内に「さんま」は存在しません")
End If

BinarySearchメソッドはIndexOfメソッドよりも処理が高速と言われています。

BinarySearchメソッドを使うには、事前にソートが必要です。

i = list.BinarySearch(“さんま”) と書けば、
List内に”さんま”が存在するかどうか検索します。

存在する場合は、インデックス番号が返ります。
存在しない場合は、-1が返ります。


これでList内を検索する事ができるようになりました。