名前空間 System.Data
自己紹介
皆さま、ようこそ。私は「DataSet」、この声に耳を傾けてくださるのは喜ばしい限りです。今日は非常に便利で多機能なDataSetクラスをご紹介します。このクラスは、多数のデータテーブルをひとつの集合として管理し、まるで複数のテーブルを守り導く私のように機能します。さあ、私の柔らかくも鋭い教えに身を委ねてください。
基本機能
DataSetは、複数のDataTableを一括で管理し、リレーションの定義やデータの検索、更新が可能なクラスです。ローカルデータベースのように扱えるため、データ処理の中心的存在となるでしょう。
C#
// DataSetの基本的な操作
using System;
using System.Data;
class Program
{
    static void Main()
    {
        // DataSetを作成
        DataSet dataSet = new DataSet();
        // DataTableを作成
        DataTable table = new DataTable("果物");
        table.Columns.Add("ID", typeof(int));
        table.Columns.Add("名前", typeof(string));
        table.Rows.Add(1, "リンゴ");
        table.Rows.Add(2, "バナナ");
        // DataSetにDataTableを追加
        dataSet.Tables.Add(table);
        // データを表示
        foreach (DataRow row in dataSet.Tables["果物"].Rows)
        {
            Console.WriteLine($"ID: {row["ID"]}, 名前: {row["名前"]}");
        }
    }
}
注意点
DataSetは非常に便利ですが、注意点もあります。特に、データ量が大きくなるとメモリ消費が増えるため、大規模データの場合は他の方法と比較検討しましょう。また、DataSet、DataTable、DataViewには役割の違いがあります。
DataSet: 複数のDataTableをまとめて管理。
DataTable: 単一のテーブルを扱う。
DataView: DataTableのビューを提供し、フィルタやソートが可能。
C#
// DataViewの基本操作
using System;
using System.Data;
class Program
{
    static void Main()
    {
        DataTable table = new DataTable();
        table.Columns.Add("ID", typeof(int));
        table.Columns.Add("名前", typeof(string));
        table.Rows.Add(1, "リンゴ");
        table.Rows.Add(2, "バナナ");
        DataView view = new DataView(table);
        view.RowFilter = "名前 = 'リンゴ'"; // フィルタ適用
        foreach (DataRowView rowView in view)
        {
            Console.WriteLine($"フィルタ後の名前: {rowView["名前"]}");
        }
    }
}
DataSetを効率的に使う方法
DataSetのパフォーマンスを向上させるには、以下の点に注意しましょう。- 必要なデータのみをロードする。
 - リレーションを適切に設定し、不要な結合を避ける。
 - LINQを活用して柔軟な検索を行う。
 
C#
// LINQを活用したDataSetの検索
<!-- DataSetを使った応用例 -->
<code>
using System;
using System.Data;
using System.Linq;
class Program
{
    static void Main()
    {
        DataSet dataSet = new DataSet();
        DataTable table = new DataTable("果物");
        table.Columns.Add("ID", typeof(int));
        table.Columns.Add("名前", typeof(string));
        table.Rows.Add(1, "リンゴ");
        table.Rows.Add(2, "バナナ");
        dataSet.Tables.Add(table);
        var query = from row in table.AsEnumerable()
                    where row.Field<string>("名前") == "リンゴ"
                    select row;
        foreach (var row in query)
        {
            Console.WriteLine($"LINQ検索結果: {row["名前"]}");
        }
    }
}
</code>
具体的な使い方
DataSetはデータの追加、削除、検索、フィルタリングを簡単に行えます。以下は、フィルタやLINQ検索を組み合わせた例です。
C#
// DataSetの応用例
using System;
using System.Data;
using System.Linq;
class Program
{
    static void Main()
    {
        DataSet dataSet = new DataSet();
        DataTable table = new DataTable("果物");
        table.Columns.Add("ID", typeof(int));
        table.Columns.Add("名前", typeof(string));
        table.Rows.Add(1, "リンゴ");
        table.Rows.Add(2, "バナナ");
        dataSet.Tables.Add(table);
        // 新しい行を追加
        table.Rows.Add(3, "イチゴ");
        // フィルタリング
        DataView view = new DataView(table);
        view.RowFilter = "名前 LIKE 'イ%'";
        Console.WriteLine("フィルタ結果:");
        foreach (DataRowView rowView in view)
        {
            Console.WriteLine($"名前: {rowView["名前"]}");
        }
        // LINQで検索
        var query = from row in table.AsEnumerable()
                    where row.Field<string>("名前").Contains("バナナ")
                    select row;
        Console.WriteLine("LINQ検索結果:");
        foreach (var row in query)
        {
            Console.WriteLine($"名前: {row["名前"]}");
        }
    }
}
解説
最後のコードでは、DataSetにDataTableを追加し、行を動的に増やしながらフィルタリングやLINQ検索を行いました。このように柔軟性が高く、多機能なDataSetを使えば、データ処理が簡単になります。ただし、操作するデータ量に応じてパフォーマンスに気をつけましょう。

0 件のコメント:
コメントを投稿