0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINQの説明とサンプルコード

Posted at

前回の記事から日があいてしまいましたが、今回はLINQを取り上げます。

型DataTableに対して、言ってみれば、SQLのように指定したデータを取得するものです。

FruitsDataTableのイメージ

No Name Color
1 Apple Red
2 Banana Yellow
3 Grape Purple
4 Orange Orange
'配列を用意
Dim array1() As String = {"Apple","Banana","Grape","Orange"}
Dim array2() As String = {"Red","Yellow","Purple","Orange"}
Dim dt As New DataTable

dt.Columns.Add("No", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Color", GetType(String))

For i = 0 To 3

    Dim dr As DataRow = dt.Rows.Add()
    dr("No") = i + 1
    dr("Name") = array1(i)
    dr("Color") = array2(i)

Next i

以上が、サンプルデータテーブル(dt)の作成です。

では、本題のLINQを記述します。
例えば、NameのAppleのデータのみを取り出す例です。


        Dim appleRows = From row In dt.AsEnumerable() Where row.Field(Of String)("Name") = "Apple" Select row



LINQを記述することで、データを集合演算のように抽出することができます。
複数のデータを扱うことができるため、重宝しています。

LINQのいくつかのバリエーションを記載しておきます。
ChatGPTで生成しました。

1.単純なWhere句でのフィルタリング

'特定の条件に合致する行を取り出す場合
Dim table As DataTable = GetYourDataTable()

Dim result = From row In table.AsEnumerable()
             Where row.Field(Of String)("ColumnName") = "YourValue"
             Select row

For Each r As DataRow In result
    ' 行に対する処理
Next

2.Select句で特定の列だけを取り出す

`特定の列のデータだけを取得したい場合
Dim table As DataTable = GetYourDataTable()

Dim result = From row In table.AsEnumerable()
             Select row.Field(Of String)("ColumnName")

For Each value In result
    Console.WriteLine(value)
Next

3.複数の列を匿名型で取得
4.OrderByでのソート
5.Distinctで重複排除
等々
データのフィルタリング、選択、ソート、集計に使用できます。

「一部のコードは、OpenAIのChatGPTを使用して生成しました。」

まとめ

LINQを利用することで、データをSQLのように取得することが可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?