Использование свойства SelectedItem ComboBox с Linq анонимным типом - PullRequest
4 голосов
/ 10 февраля 2009

В C # 3.5 используется ComboBox для отображения результатов запроса LinQ. Как установить свойство selecteditem в выпадающем списке, когда запрос LinQ возвращает анонимный тип?

Я установил источник данных в выпадающем списке следующим образом:

comboBox1.DataSource = from p in db.products
                   select p;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "ProductId";

Если я это сделаю, я могу выбрать выбранный элемент, выполнив что-то вроде:

comboBox1.SelectedItem = (from p in db.products 
                          where p.ProductId = 5 
                          select p).First();

Проблема в том, что я хочу заполнить комбинированный список результатом анонимного типа, например:

comboBox1.DataSource = from p in db.products
                   select new
                   {
                     p.ProductId,
                     p.Name
                   };

Анонимный тип, который я на самом деле использую, более сложен, чем его, но этого достаточно для объяснения.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2009

Как насчет преобразования его в список, а затем выбора из него правильного. Поскольку SelectedItem, похоже, не работает, вы можете попробовать установить SelectedValue.

var productList = (from p in db.products
                   select new {
                      ProductId = p.ProductID,
                      Name = p.Name
                   }).ToList();

comboBox1.DataSource = productList;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "ProductId";
comboBox1.SelectedValue = 5;
0 голосов
/ 10 февраля 2009

Это должно сработать

var list = (from p in db.products
              select new {
                             p.ProductId,
                             p.Name
                           }).ToList();
comboBox1.DataSource = list;
comboBox1.SelectedItem = list[0];
...