2

現時点では、SQL サーバー (2008) データベースからデータを取得しています。cyurrent の方法は、DataTable を使用することであり、これが渡されて使用されます。

    if (parameters != null)
    {
        SqlDataAdapter _dataAdapter = new SqlDataAdapter(SqlQuery, CreateFORSConnection());
        foreach (var param in parameters)
        {
            _dataAdapter.SelectCommand.Parameters.AddWithValue(param.Name, param.Value);
        }
        DataTable ExtractedData = new DataTable(TableName);
        _dataAdapter.Fill(ExtractedData);
        return ExtractedData;
    }
    return null;

しかし今、ユーザーは、SQL Server のテーブルと同じ構造を持つ txt ファイルからデータを取得することもできると言っています。したがって、「Customer」というテーブルがある場合、Customer の csv ファイルがあります。同じ列構造です。CSV の最初の行は列名で、テーブルと一致します。

txt ファイルをデータ テーブルに読み込み、そのデータ テーブルで SELECT を実行することは可能でしょうか? 私のクエリのほとんどは、単一テーブルのクエリです。

SELECT * FROM Table WHERE Code = 111

ただし、参加するケースが 1 つあります。少し難しいかもしれませんが、計画を立てることはできます。最初に txt ファイルをデータ テーブルに入れることができれば、それで作業できます。

上記のコードを使用して、SQL Server ではなく CSV から読み取るように接続文字列を変更できませんか?

4

2 に答える 2

5

まず、CSVデータをDataTableに読み込む必要があります。多くのCSVパーサーがありますが、ADO.NETを使用することを好むため、OleDBクライアントを使用できます。次の記事を参照してください。

http://www.switchonthecode.com/tutorials/csharp-tutorial-using-the-built-in-oledb-csv-parser

両方のデータセットが異なる場所に存在するため、結合は少し難しくなります。ただし、実行できるのは、2つのDataTable(各ソースから1つ)を取得し、Linqを使用してそれらを結合することです。

C#でのDataTablesの内部結合

于 2012-12-05T00:49:26.947 に答える
1

テキストファイルをList<string>(ファイルごとに列が1つしかない場合)に読み込んでから、LINQを使用してリストをクエリできます。例えば:

var result = from entry in myList
    where entry == "111"
    select entry;

もちろん、この例は、検索しているのと同じ文字列しか返されないため、役に立たないものです。しかし、ファイルに複数の列があり、それらがの列と一致する場合はDataTable、ファイルをデータテーブルに読み込んでから、LINQを使用してテーブルをクエリしませんか?

LINQを使用してDataTableをクエリする方法に関する簡単なチュートリアルは次のとおりです。http: //blogs.msdn.com/b/adonet/archive/2007/01/26/querying-datasets-introduction-to-linq-to-dataset .aspx

于 2012-12-05T00:47:21.357 に答える