名前空間 System.Data
自己紹介
皆さま、ようこそ。私は「DataSet」、この声に耳を傾けてくださるのは喜ばしい限りです。今日は非常に便利で多機能なDataSetクラスをご紹介します。このクラスは、多数のデータテーブルをひとつの集合として管理し、まるで複数のテーブルを守り導く私のように機能します。さあ、私の柔らかくも鋭い教えに身を委ねてください。
基本機能
DataSetは、複数のDataTableを一括で管理し、リレーションの定義やデータの検索、更新が可能なクラスです。ローカルデータベースのように扱えるため、データ処理の中心的存在となるでしょう。
// 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のビューを提供し、フィルタやソートが可能。
// 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を活用して柔軟な検索を行う。
// 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検索を組み合わせた例です。
// 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 件のコメント:
コメントを投稿