MENU

C# DataTable.Select メソッド

C#でデータ処理を行う際、DataTableは非常に便利なツールです。特に、DataTable.Selectメソッドを使用すると、データテーブルから特定の条件に合う行を簡単に抽出できます。この記事では、C#のDataTable.Selectメソッドの基本的な使い方から応用まで、初心者の方にも分かりやすく解説します。

目次

DataTable.Selectメソッドの基本

DataTable.Selectメソッドは、指定した条件に一致する行を配列として返します。まずは、基本的な使い方を見てみましょう。

using System;
using System.Data;

class Program
{
    static void Main()
    {
        // サンプルのDataTableを作成
        DataTable employees = new DataTable("社員");
        employees.Columns.Add("ID", typeof(int));
        employees.Columns.Add("名前", typeof(string));
        employees.Columns.Add("部署", typeof(string));
        employees.Columns.Add("給与", typeof(decimal));

        // データを追加
        employees.Rows.Add(1, "山田太郎", "営業", 300000);
        employees.Rows.Add(2, "佐藤花子", "人事", 280000);
        employees.Rows.Add(3, "鈴木一郎", "開発", 320000);
        employees.Rows.Add(4, "田中美咲", "営業", 290000);

        // 営業部門の社員を選択
        DataRow[] salesStaff = employees.Select("部署 = '営業'");

        Console.WriteLine("営業部門の社員:");
        foreach (DataRow row in salesStaff)
        {
            Console.WriteLine($"名前: {row["名前"]}, 給与: {row["給与"]:C}");
        }
    }
}

このコードでは、DataTable.Selectメソッドを使用して、部署が「営業」の社員を抽出しています。

複雑な条件の指定

DataTable.Selectメソッドでは、より複雑な条件を指定することもできます。

// 給与が300,000円以上の開発部門の社員を選択
DataRow[] highPaidDevelopers = employees.Select("部署 = '開発' AND 給与 >= 300000");

Console.WriteLine("\n給与が300,000円以上の開発部門の社員:");
foreach (DataRow row in highPaidDevelopers)
{
    Console.WriteLine($"名前: {row["名前"]}, 給与: {row["給与"]:C}");
}

この例では、ANDを使用して複数の条件を組み合わせています。

ソート順の指定

Selectメソッドでは、結果をソートすることも可能です。

// 全社員を給与の降順で選択
DataRow[] allEmployeesSorted = employees.Select("", "給与 DESC");

Console.WriteLine("\n全社員(給与の降順):");
foreach (DataRow row in allEmployeesSorted)
{
    Console.WriteLine($"名前: {row["名前"]}, 部署: {row["部署"]}, 給与: {row["給与"]:C}");
}

この例では、第一引数に空文字列を指定して全ての行を選択し、第二引数でソート順を指定しています。

パラメータ化されたクエリ

セキュリティ上の理由から、ユーザー入力を直接Selectメソッドの条件に使用することは避けるべきです。代わりに、パラメータ化されたクエリを使用しましょう。

string departmentName = "営業"; // この値がユーザー入力だと想定
decimal minSalary = 290000;

DataRow[] filteredEmployees = employees.Select($"部署 = '{departmentName}' AND 給与 >= {minSalary}");

Console.WriteLine($"\n{departmentName}部門で給与が{minSalary:C}以上の社員:");
foreach (DataRow row in filteredEmployees)
{
    Console.WriteLine($"名前: {row["名前"]}, 給与: {row["給与"]:C}");
}

この方法は、SQLインジェクション攻撃のリスクを軽減します。

まとめ

DataTable.Selectメソッドは、C#でデータテーブルから特定の条件に合う行を抽出するための強力なツールです。基本的な使用方法から、複雑な条件指定、ソート順の指定、そしてセキュリティを考慮したパラメータ化まで、様々な使い方ができます。

初心者の方は、まずは単純な条件での抽出から始めて、徐々に複雑な条件やソート機能の使用に挑戦してみてください。DataTable.Selectメソッドの使い方をマスターすることで、C#でのデータ処理スキルが大きく向上するでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次