Я пытаюсь найти элемент из списка, который имеет поле с определенным значением; некоторые записи будут иметь одинаковое значение для этого поля, и в этом случае я бы хотел вернуть одну из них в случайном порядке. Функция List.Find возвращает один случайным образом, если есть несколько записей, которые удовлетворяют критериям? Код ниже - это то, что у меня сейчас есть; если он используется в одном и том же списке несколько раз, будет ли он возвращать одну и ту же запись каждый раз, если несколько удовлетворяют критериям? Этот список достаточно велик, и я предпочел бы не разбираться с ним, составить список всего, что соответствует критериям, а затем случайным образом вернуть один из них; Я надеюсь найти более эффективный способ. Если это невозможно для Списка, существует ли другая структура данных, более подходящая для этого?
public List<Category> Categories {get; set;}
public Category CatByName(string nm)
{
string name = nm.ToUpper();
return Categories.Find(x => x.CategoryName.Contains(name));
}