VB.NET LINQでリストの値を操作するサンプル

VB.NETのLINQでリストの値を操作するサンプルです。

目次

説明 LINQとは
各要素を処理する(Select)
各要素を条件で判定して抽出する(Where)
要素の重複をなくす(Distinct)
要素を並び替える(OrderBy)
要素数を制限する(Take)
要素数をスキップする(Skip)
IEnumerable型をList型に変換(ToList)
LINQのメソッドが複数の場合

LINQとは

各要素を処理する(Select)

Module Module1
	Sub Main()
		Dim List1 As New List(Of String)(New String() {"赤", "黄", "青"})

		Dim List2 = From x In List1
					Select (x + "です")

		For Each x In List2
			Console.WriteLine(x) '赤です 黄です 青です
		Next
	End Sub
End Module

6行目は、Selectで3行目の各要素に文字列を追加しています。

各要素を条件で判定して抽出する(Where)

	Dim List1 As New List(Of String)(New String() {"赤", "黄", "青"})

	Dim List2 = From x In List1
					Where (x = "黄")
	'Dim List2 = From x In List1
	'Where (x.StartsWith("黄"))

	For Each x In List2
		Console.WriteLine(x) '黄
	Next

Whereメソッドで各要素を条件で判定してtrueのものを抽出しています。
6行目のStartWithメソッドは、文字列の先頭が引数の値と一致した場合trueを返します。

要素の重複をなくす(Distinct)

	Dim List1 As New List(Of String)(New String() {"A", "A", "B"})

	Dim List2 = From x In List1
				Distinct

	For Each x In List2
		Console.WriteLine(x) 'A B
	Next

Distinctメソッドは、重複をなくします。

要素を並び替える(OrderBy)

	Dim List1 As New List(Of String)(New String() {"aa", "zz", "cc"})

	Dim List2 = From x In List1
				Order By x
	For Each x In List2
		Console.WriteLine(x) 'aa cc zz
	Next

	Dim List3 = From x In List1
				Order By x Descending
	For Each x In List3
		Console.WriteLine(x) 'zz cc aa
	Next

OrderByは昇順になります。
OrderBy Descendingは降順になります。

要素数を制限する(Take)

		Dim List1 As New List(Of String)(New String() {"赤", "黄", "青"})

		Dim List2 = From x In List1
					Take (2)

		For Each x In List2
			Console.WriteLine(x) '赤 黄
		Next

Takeは引数の値の要素数に制限されます。

要素数をスキップする(Skip)

	Dim List1 As New List(Of String)(New String() {"赤", "黄", "青"})

	Dim List2 = From x In List1
				Skip (2)

	For Each x In List2
		Console.WriteLine(x) '青
	Next

Skipは引数の値の要素数をスキップします。

IEnumerable型をList型に変換(ToList)

	Dim List1 As New List(Of String)(New String() {"赤", "黄", "青"})
	Dim List2 = From x In List1
				Select (x)
	Console.WriteLine(List2.ToList()) 'System.Collections.Generic.List`1[System.String]

3行目のselectメソッドの戻りは、IEnumerable型です。
4行目のToListメソッドは、IEnumerable型をList型に変換します。

LINQのメソッドが複数の場合

		Dim List1 As New List(Of Integer)(New Integer() {10, 20, 30})

		Dim List2 = From x In List1
					Where (x > 10)
					Select (x + 5)

		For Each x In List2
			Console.WriteLine(x) '25 35
		Next

4,5行目は、LINQのメソッドを複数指定しています。

関連の記事

VB.NET For文 処理を繰り返す(Exit/Continue)

△上に戻る