MENU

C#データテーブルから行を取得する

C#プログラミングでデータを扱う際、DataTableは非常に便利なツールです。特に、DataTableから必要な行を取得する操作は頻繁に行われます。この記事では、C#でDataTableから行を取得するさまざまな方法を、初心者の方にも分かりやすく解説します。

目次

DataTableの準備

まずは、サンプルのDataTableを作成しましょう。

using System;
using System.Data;

DataTable CreateSampleTable()
{
    DataTable dt = new DataTable("社員");
    dt.Columns.Add("ID", typeof(int));
    dt.Columns.Add("名前", typeof(string));
    dt.Columns.Add("部署", typeof(string));
    dt.Columns.Add("給与", typeof(decimal));

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

    return dt;
}

DataTable employees = CreateSampleTable();

インデックスを使用して行を取得

最も基本的な方法は、インデックスを使用して行を取得することです。

DataRow row = employees.Rows[1];
Console.WriteLine($"2番目の社員: {row["名前"]} ({row["部署"]})");

Selectメソッドを使用して行を取得

条件に基づいて行を取得するには、Selectメソッドが便利です。

DataRow[] marketingStaff = employees.Select("部署 = '営業'");
Console.WriteLine("営業部の社員:");
foreach (DataRow r in marketingStaff)
{
    Console.WriteLine($"{r["名前"]} (給与: {r["給与"]:C})");
}

LINQを使用して行を取得

より複雑な条件や操作が必要な場合は、LINQを使用すると柔軟に対応できます。

var highPaidEmployees = employees.AsEnumerable()
    .Where(r => r.Field<decimal>("給与") > 300000)
    .Select(r => new { 
        Name = r.Field<string>("名前"), 
        Salary = r.Field<decimal>("給与") 
    });

Console.WriteLine("給与が300,000円を超える社員:");
foreach (var emp in highPaidEmployees)
{
    Console.WriteLine($"{emp.Name} (給与: {emp.Salary:C})");
}

FindByメソッドを使用してプライマリキーで行を取得

プライマリキーが設定されている場合、FindByメソッドを使用して特定の行を素早く取得できます。

employees.PrimaryKey = new DataColumn[] { employees.Columns["ID"] };
DataRow specificEmployee = employees.Rows.Find(3);

if (specificEmployee != null)
{
    Console.WriteLine($"ID 3の社員: {specificEmployee["名前"]} ({specificEmployee["部署"]})");
}
else
{
    Console.WriteLine("指定されたIDの社員は見つかりません。");
}

パフォーマンスに関する注意点

大量のデータを扱う場合、パフォーマンスに注意が必要です。

  • Selectメソッドは小規模なデータセットに適しています。
  • 大規模なデータセットでは、LINQのAsEnumerable()を使用する方が効率的な場合があります。
  • プライマリキーが設定されている場合、FindByメソッドが最も高速です。

まとめ

C#でDataTableから行を取得する方法は複数あり、状況に応じて適切な方法を選択することが重要です。

  • インデックスによる取得:単純な順序による取得
  • Selectメソッド:条件に基づく取得
  • LINQ:複雑な条件や操作が必要な場合
  • FindByメソッド:プライマリキーによる高速な取得

これらの方法を適切に使い分けることで、効率的なデータ処理が可能になります。初心者の方は、まずは基本的な方法から始めて、徐々に高度な技術に挑戦してみてください。DataTableの操作に習熟することで、C#プログラミングの幅が大きく広がるでしょう。

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

コメント

コメントする

目次