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#でのデータ処理スキルが大きく向上するでしょう。
コメント