Свойство ComboBox SelectedItem возвращает object
. Только во время выполнения мы знаем, какое значение это имеет. Вот почему вы не можете использовать StudentInfo.Name
, потому что с точки зрения компилятора вы делаете что-то вроде var StudentInfo = new object(); Console.WriteLine(StudentInfo.Name);
: object
не содержит свойства Name
.
Ваша следующая проблема заключается в том, что вы используете анонимный тип (new { ID = t.ID, Name = t.Name }
), поэтому вы не можете просто привести SelectedItem
обратно к типу.
Некоторые опции:
1. Определить класс
public class BasicStudent
{
public int ID {get;set;}
public string Name {get;set;}
}
измените ваш выбор на .Select(t => new BasicStudent { ID = t.ID, Name = t.Name })
и затем произнесите .SelectedItem
: Console.WriteLine(((BasicStudent)comboStudent.SelectedItem));
2. Используйте оригинальный класс
Прекратите выбирать анонимный тип и просто используйте объект как есть. Затем просто откиньте от .SelectedItem
: Console.WriteLine(((Student)comboStudent.SelectedItem));
3. Используйте динамический
dynamic student = comboStudent.SelectedItem;
Console.WriteLine(student.Name.ToString());
4. Используйте хакерский трюк, чтобы привести comboStudent.SelectedItem
обратно к анонимному типу
См. Ответ здесь .