-1

データベースから 2 列のデータセットを取得しています。「列 A」の同じ行の値に基づいて、データベース「列 B」の 2 番目の列から値を選択する必要があります。

'Column A'  'Column B'
   1111       aaaa
   1212       bbbb
   1313       caca
    etc        etc

したがって、この例では、列 A の値 1212 を使用して列 B の値を選択する必要があり、その結果、文字列に格納できる bbbb が選択されます。テーブル内のさまざまな値に対して、これを複数回行う必要があります。

ここに私がこれまでに取り組んでいるものがあります:

sSql.Remove(0, sSql.Length);
        sSql.Append("SELECT NAME_, VALUE_TEXT");
        sSql.Append(" FROM PARAMETERS_");
        sSql.Append(" WHERE PARAMETERS_.NAME_ = 'Captions.User_TxtBox1'");
        System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(((DataDynamics.ActiveReports.DataSources.OleDBDataSource) rpt.DataSource).ConnectionString.ToString());
        System.Data.OleDb.OleDbCommand selectCmd = new System.Data.OleDb.OleDbCommand(sSql.ToString(), conn);
        da.SelectCommand = selectCmd;
        da.Fill(ds);

    txtUser.Text = ds.Tables[0].Rows[0]["VALUE_TEXT"].ToString();

これは機能しますが、1 つのレコードのみです。SQL ステートメントで WHERE 句を削除し、探している特定のレコードをテーブル全体から選択できるようにしたいと考えています。PARAMETERS_.NAME_ の値が Captions.Tool1、Captions.Tool2 などになる一連のエントリを取得しています。これらの行の VALUE_TEXT が何であるかを知る必要があるため、それらの値を配置できます。対応するテキスト ボックスに。

4

1 に答える 1

2

LINQ to DataSetを使用できます。列 A の値で行をフィルター処理し、フィルター処理された行から列 Bから選択し、(オプションで) 最初の結果を取得します。

var result = table.AsEnumerable()
                  .Where(r => r.Field<int>("Column A") == 1212)
                  .Select(r => r.Field<string>("Column B"))
                  .FirstOrDefault();
于 2013-07-08T16:31:53.110 に答える