0

選択したフィールド(LINQ)からwinformのテキストボックスに値を渡すにはどうすればよいですか?

単一のフィールドの場合、私はこのようにします

   var result = from row in dtValueBranch.AsEnumerable()
                         where row.Field<int>("branchID") == idBranch
                         select row.Field<string>("branchName");

        StringBuilder sb = new StringBuilder();

        foreach (string s in result)
        {
            sb.Append(s + Environment.NewLine);
        }

        tbBranch.Text = sb.ToString();

したがって、これは多くのフィールドへのLINQコードです

    var result = from row in dtValueBranch.AsEnumerable()
                 where row.Field<int>("branchID") == idBranch
                 select new
                 {
                      BranchName = row["branchName"].ToString(),
                      branchTel = row["branchTel1"].ToString(),
                      // And many more fields

                 };

各テキストボックスに各フィールドを実装するにはどうすればよいですか?

4

2 に答える 2

3

結果のクエリには複数の行が含まれる可能性があることに注意してください。質問は、1行のフィールドにアクセスする方法に焦点を当てているようです。次のようにできます。

var row = result.First();  // select first row of results

textbox1.Value = row.BranchName;
textbox2.Value = row.branchTel;
// etc..

クエリのselect new構文により、結果の列挙に匿名型が作成されます。その型を名前で参照することはできませんが、var宣言スタイルを使用してコンパイラに型の推論を行わせる場合は、ローカル変数 (行など) を作成できます。

すべての行の 1 つのフィールドのすべての値を 1 つのテキスト ボックスに詰め込みたい場合 (最初のコード サンプルのように)、次のようにすることができます。

    StringBuilder sbBranch = new StringBuilder();
    StringBuilder sbBranchTel = new StringBuilder();
    // etc

    foreach (var row in result)
    {
        sbBranch.Append(row.BranchName);
        sbBranch.Append(Environment.NewLine);
        sbBranchTel.Append(row.branchTel);
        sbBranchTel.Append(Environment.NewLine);
        // etc
    }

    tbBranch.Text = sbBranch.ToString();
    tbBranchTel.Text = sbBranchTel.ToString();
    // etc

ただし、データの複数のフィールドの複数の行を表示したい場合は、一連のテキスト ボックスの代わりにデータ グリッド コントロールの使用を検討することをお勧めします。多くの労力を節約でき、ユーザーもおそらく感謝するでしょう。

于 2012-11-02T17:10:07.130 に答える
1

次のようにできます。

var rows = dtValueBranch.AsEnumerable()
                        .Where(row => row.Field<int>("branchID") == idBranch);

textBox1.Value = string.Join(Environment.NewLine, 
                           rows.Select(row => row.Field<string>("branchName"));

textBox2.Value = string.Join(Environment.NewLine, 
                           rows.Select(row => row.Field<string>("branchTel1"));
于 2012-11-02T17:03:08.867 に答える