dotnet:dataset

DataSet クラス (System.Data)

[C#]

// 読み込み対象ファイルパス
string fileName = @"c:\xmlDataSet.xml";
// XMLファイルの読み込み
xmlDataSet.ReadXml(fileName);

[C#]

// 書き込み対象ファイルパス
string fileName = @"c:\xmlDataSet.xml";
// XMLファイルの書き込み
xmlDataSet.WriteXml(fileName);

[C#]

// 未知のXML形式ファイルパス
string xmlFileName = @"c:\xmlDataSet.xml";
// XSDファイルパス
string xsdFileName = @"c:\xmlDataSet.xsd";
// XMLファイルの読み込み
xmlDataSet.ReadXml(xmlFileName );
// XSDファイルの書き込み
xmlDataSet.WriteXmlSchema(xsdFileName);

XSDファイルは Visual Studio にドラッグアンドドロップすることで型付データセットを生成できる。
また、型付データセット内の余分な DataTable を削除して、型付データセットを利用して ReadXml() を行うことで、余分なテーブルデータをスキップしてXMLファイルを読み込むことができる。

 DataTableのソートは、DataViewのSort機能を利用して行うことができる。しかし、型付DataSetの場合は、DataViewによってソートを行いToTable()メソッドで結果を得ようとすると、ToTable()メソッドはDataTable型を返却するため、ソートを行った以降の処理で型付DataSetによって自動生成されたコードの恩恵を受けられなくなってしまう。

 ここでは、ジェネリックメソッドを実装して、型付DataSetのDataTableを型付のままソートする方法を紹介する。

[VB]

Imports System
Imports System.Data
 
Module SampleAppVB
    Public Function SortTable(Of T As DataTable)( _
        ByVal source As T, ByVal expression As String) As T
 
        ' データテーブルのコピーを作成
        Dim dest As T = CType(source.Clone(), T)
 
        ' ソートされたデータビューの作成
        Dim dv As DataView = New DataView(source)
        dv.Sort = expression
 
        ' ソートされたレコードのコピー
        For Each drv As DataRowView In dv
            dest.ImportRow(drv.Row)
        Next
 
        Return dest
    End Function
End Module

[C#]

using System;
using System.Data;
 
namespace SampleApplicationCS
{
    public class SampleAppCS
    {
        public static T SortTable<T>(T source, string expression)
            where T : System.Data.DataTable
        {
            // データテーブルのコピーを作成
            T dest = (T)source.Clone();
 
            // ソートされたデータビューの作成
            DataView dv = new DataView(source);
            dv.Sort = expression;
 
            // ソートされたレコードのコピー
            foreach (DataRowView drv in dv)
            {
                dest.ImportRow(drv.Row);
            }
 
            return dest;
        }
    }
}

[C++]

using namespace System;
using namespace System::Data;
 
generic<typename T> where T: System::Data::DataTable
T SortTable(T source, String^ expression)
{
    // データテーブルのコピーを作成
	T dest = (T)source->Clone();
 
    // ソートされたデータビューの作成
    DataView^ dv = gcnew DataView(source);
	dv->Sort = expression;
 
    // ソートされたレコードのコピー
    for each (DataRowView^ drv in dv)
    {
		dest->ImportRow(drv->Row);
    }
 
    return dest;
}
  • dotnet/dataset.txt
  • 最終更新: 2019/05/18 02:23
  • by 非ログインユーザー