Как я могу объединить двух учеников в совместный DisplayMember комбинированного списка?

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

private void PopulateStudentsComboBox()
{
    if (System.IO.File.Exists(AYttFMConstsAndUtils.STUDENTS_FILENAME))
    {
        if (null == _studentsList)
        {
            var students = System.IO.File.ReadAllText(AYttFMConstsAndUtils.STUDENTS_FILENAME);
            _studentsList = JsonConvert.DeserializeObject<List<Student>>(students);
        }
        // Sort by firstname            
        _studentsList = _studentsList.OrderBy(i => i.FirstName).ToList();
        comboBoxStudents.DataSource = _studentsList; 
        string firstNameLastName = "FirstName LastName";
        comboBoxStudents.DisplayMember = firstNameLastName;
        comboBoxStudents.ValueMember = "StudentID";
    }
}

Это не работает; ValueMember становится DisplayMember.

Это работает:

. . .
comboBoxStudents.DataSource = _studentsList; 
comboBoxStudents.DisplayMember = "FirstName";
comboBoxStudents.ValueMember = "StudentID";
. . .

... но не подрезает горчицу - мне нужны как имена, так и фамилии, а не только имя (или наоборот).

Как я могу объединить два поля класса, чтобы создать DisplayMember комбинированного списка?

1 ответ

Решение

Я бы продлил Student класс со свойством, которое возвращает "FirstName + LastName"

лайк...

...
    public string DisplayName
        {
            get
            {
                return string.Format("{0} {1}", this.FirstName, this.LastName);
            }
        }
...

чем присвоить это свойство DisplayMember

comboBoxStudents.DisplayMember = "DisplayName";
Другие вопросы по тегам