MENU

C#データ処理の基礎:DataTableの使い方完全ガイド

C#プログラミングにおいて、効率的なデータ処理は非常に重要です。特に、表形式のデータを扱う場合、DataTableは強力かつ柔軟なツールとなります。この記事では、C#でのDataTableの使い方を基礎から応用まで、初心者の方にも分かりやすく解説します。DataTableをマスターすることで、データ処理のスキルが大幅に向上し、より効率的なプログラム開発が可能になります。

目次

DataTableの基本

まずは、DataTableの作成と基本的な操作から始めましょう。

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);

        // データの表示
        foreach (DataRow row in employees.Rows)
        {
            Console.WriteLine($"ID: {row["ID"]}, 名前: {row["名前"]}, 部署: {row["部署"]}, 給与: {row["給与"]:C}");
        }
    }
}

このコードでは、DataTableを作成し、列の追加、データの追加、そして基本的なデータの表示を行っています。

データの検索と操作

DataTableでは、データの検索や操作も簡単に行えます。

// Select メソッドを使用したデータの検索
DataRow[] developmentStaff = employees.Select("部署 = '開発'");
Console.WriteLine("\n開発部門の社員:");
foreach (DataRow row in developmentStaff)
{
    Console.WriteLine($"{row["名前"]} (給与: {row["給与"]:C})");
}

// LINQを使用したデータの検索と操作
var highPaidEmployees = employees.AsEnumerable()
    .Where(r => r.Field<decimal>("給与") > 290000)
    .Select(r => new { 
        Name = r.Field<string>("名前"), 
        Salary = r.Field<decimal>("給与") 
    });

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

// データの更新
DataRow rowToUpdate = employees.Select("ID = 2")[0];
rowToUpdate["給与"] = 290000;
Console.WriteLine($"\n{rowToUpdate["名前"]}の給与を更新しました: {rowToUpdate["給与"]:C}");

DataTableの高度な使用法

より複雑なシナリオでは、DataTableの高度な機能を活用できます。

// プライマリキーの設定
employees.PrimaryKey = new DataColumn[] { employees.Columns["ID"] };

// 新しい行の追加(DataRowオブジェクトを使用)
DataRow newRow = employees.NewRow();
newRow["ID"] = 4;
newRow["名前"] = "田中美咲";
newRow["部署"] = "マーケティング";
newRow["給与"] = 275000;
employees.Rows.Add(newRow);

// FindByメソッドを使用した高速な行の検索
DataRow foundRow = employees.Rows.Find(4);
if (foundRow != null)
{
    Console.WriteLine($"\n新しく追加された社員: {foundRow["名前"]} ({foundRow["部署"]})");
}

// DataViewを使用したデータのフィルタリングとソート
DataView view = new DataView(employees);
view.RowFilter = "給与 > 280000";
view.Sort = "給与 DESC";

Console.WriteLine("\n給与が280,000円を超える社員(給与の降順):");
foreach (DataRowView rowView in view)
{
    Console.WriteLine($"{rowView["名前"]} (給与: {rowView["給与"]:C})");
}

パフォーマンスとベストプラクティス

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

  1. 大量のデータを追加する際は、BeginLoadData()EndLoadData()メソッドを使用しましょう。
  2. 頻繁に検索を行う列にはインデックスを設定しましょう。
  3. 可能な限り、型付きのDataTableを使用しましょう。
// 大量のデータを効率的に追加
employees.BeginLoadData();
for (int i = 5; i <= 1000; i++)
{
    employees.Rows.Add(i, $"社員{i}", "一般", 250000);
}
employees.EndLoadData();

// インデックスの追加
employees.Columns["部署"].ExtendedProperties["INDEX"] = true;

Console.WriteLine($"\n合計社員数: {employees.Rows.Count}");

まとめ

C#のDataTableは、データ処理において非常に強力かつ柔軟なツールです。基本的な操作から高度な使用法まで、様々な機能を提供しています。この記事で紹介した技術を活用し、効率的なデータ管理、検索、操作を行ってください。

DataTableの使い方をマスターすることで、データベース操作やデータ分析、レポート生成など、多岐にわたるアプリケーション開発のスキルアップにつながります。初心者の方は、基本的な操作から始めて、徐々に高度な機能に挑戦してみてください。実践を重ねることで、C#でのデータ処理スキルが飛躍的に向上するでしょう。

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

コメント

コメントする

目次