Как я могу получить выбранный элемент из запроса Linq в переменной - PullRequest
0 голосов
/ 30 марта 2012

Когда я выбираю имя сотрудника в поле со списком, мне нужно отобразить дату рождения сотрудника в текстовом поле

using (LINQtoEntitiesEntities MyEntities = new LINQtoEntitiesEntities())
{
    ObjectQuery<Employee> Emp = MyEntities.Employee;
    comboBox1.DataSource = (from u in Emp select new { u.ID, u.Name, u.BirthDate }).ToList();
    comboBox1.ValueMember = "ID";
    comboBox1.DisplayMember = "Name";
    TextBox1.Text = ....................... ;
}

Мне нужно получить u.BirthDate в переменной из запроса Как я могу это сделать?

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

Чтобы добавить его сразу же, попробуйте:

var employees = (from u in Emp select new { u.ID, u.Name, u.BirthDate }).ToList();
comboBox1.DataSource = employees;

if(employees.Any()) 
    TextBox1.Text = employees.First(x => x.BirthDate);

Чтобы динамически изменить его при изменении комбинированного списка, вы можете добавить следующий обработчик события в событие SelectionChangeCommitted:

private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
{
    ComboBox senderComboBox = (ComboBox) sender;

    var selectedObject = senderComboBox.SelectedItem;

    if(selectedObject == null) return;

    TextBox1.Text = ((IEnumerable<Employee>)senderComboBox.DataSource)
                        .First(emp => emp.ID == senderComboBox.Value).BirthDate;

}

(Предполагается, что дата рождения уже является строкой);

1 голос
/ 30 марта 2012

Может как то так?

TextBox1.Text = ((IEnumerable<Employee>)comboBox1.DataSource)
    .Where(e => e.ID == comboBox1.Value)
    .First().BirthDate;
...