2

DataSource が匿名クラスである BindingSource の現在の行の列を選択する方法はありますか?

var userResults = from u in dataContext.Users
          join c in dataContext.Computers on u.ID equals c.UserID
          where doSearch
             && u.Name.Contains(userNameTextBox.Text)
             && u.UserName.Contains(userUsernameTextBox.Text)
          select new { u.Name, u.UserName, u.Branch, c.Installations, u.ID };
userBindingSource.DataSource = userResults;

の現在の値を取得したいu.ID

4

1 に答える 1

2

ここでの問題は、BindingSource の項目が Object 型であり、それらを匿名型に変換する必要があり、それを行うことができないことです....実際には、できます(「匿名型へのキャスト」セクションを確認してください)。 )、しかし、これは将来うまくいかないかもしれない巧妙なトリックです.

プロパティの値を取得するためのその他の (より良い) オプション:

  • 匿名型の代わりに具象型を使用する
  • リフレクションを使用してプロパティの値を取得する
  • C# 4.0 のみ: dynamic キーワードを使用して、必要なプロパティを呼び出します。
  • バインドされたコントロールの値を取得します (たとえば、データソースが DataGridView にバインドされている場合、バインディング ソースの値ではなく、datagridview セルの値を取得します)。
于 2009-08-28T14:27:03.393 に答える