Код: Выделить всё
private void LocationComboBox_DropDown(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(lastNameTextBox.Text))
{
using PersonsContext dbContext = new PersonsContext();
List filteredResults = new List();
var tempResults = dbContext.Persons
.Where(a => EF.Functions.Collate(a.LastName, "NOCASE") == lastNameTextBox.Text)
.GetType()
.GetProperties()
.Where(a => a.Name == locationTypeComboBox.Text)
.Select(a => a.GetValue(a, null)).FirstOrDefault();
if (tempResults != null)
{
filteredResults.Add(tempResults.ToString());
filteredResults.Sort();
filteredResults = filteredResults.Distinct().ToList();
locationComboBox.Items.Clear();
locationComboBox.Items.AddRange([.. filteredResults]);
locationComboBox.Items.Remove(String.Empty);
}
}
else
{
// todo:
}
}

Отредактировано: Обновление: мне удалось использовать пример кода, написанный @Fildor (спасибо), и следующее работает:
Код: Выделить всё
private void LocationComboBox_DropDown(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(lastNameTextBox.Text))
{
var projections = new Dictionary()
{
[nameof(Person.LastName)] = p => p.LastName,
[nameof(Person.Hometown)] = p => p.Hometown,
[nameof(Person.County)] = p => p.County,
[nameof(Person.State)] = p => p.State,
[nameof(Person.Country)] = p => p.Country
};
var projection = projections[locationTypeComboBox.Text];
using PersonsContext dbContext = new PersonsContext();
List filteredResults = new List();
var test = dbContext.Persons
.Where(a => EF.Functions.Collate(a.LastName, "NOCASE") == lastNameTextBox.Text)
.Select(projection)
.FirstOrDefault();
if (test != null)
{
filteredResults.Add(test.ToString());
filteredResults.Sort();
filteredResults = filteredResults.Distinct().ToList();
locationComboBox.Items.Clear();
locationComboBox.Items.AddRange([.. filteredResults]);
locationComboBox.Items.Remove(String.Empty);
}
}
else
{
// todo:
}
}

Спасибо Вам еще раз за Ваш труд и помощь в этом!
Подробнее здесь: https://stackoverflow.com/questions/790 ... linq-query