Столбец BindingSource с анонимным классом в качестве источника данных - PullRequest
2 голосов
/ 28 августа 2009

Есть ли способ выбора столбца текущей строки BindingSource, чей DataSource является анонимным классом?

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.

1 Ответ

2 голосов
/ 28 августа 2009

Проблема здесь в том, что элементы в BindingSource имеют тип Object, и вам нужно преобразовать их обратно в их анонимный тип, и вы не можете сделать это .... на самом деле, вы можете ( проверьте раздел «Приведение к анонимным типам»), но это хитрый прием, который может не сработать в будущем.

Другие (лучшие) варианты получения значения свойства:

  • Используйте конкретный тип вместо анонимного
  • Используйте отражение, чтобы получить значение свойства
  • Только C # 4.0: используйте ключевое слово dynamic, затем вызовите нужное свойство
  • Получите значение в связанном элементе управления (например, если ваш источник данных связан с DataGridView, получите значение ячейки datagridview вместо значения источника привязки)
...