Ответ Джорена - переход, но если вам нужно сохранить последовательный порядок для какой-то другой логики, И имя, к которому вы хотите обратиться к объекту, может быть членом этого объекта, чем маленький Linq также может сделать хитрость:
List<Foo> fooList = new List<Foo>;
Foo item = fooList.FirstOrDefault(f=>f.Name == "Foo Name");
Вы можете поместить это в свойство indexer пользовательской коллекции, которая выводится из списка:
public class MyList:List<Foo>
{
public Foo this[string name]
{
get { return this.FirstOrDefault(f=>f.Name == "Foo Name"); }
}
}
... который позволяет вам получить желаемый синтаксис, поддерживая последовательное упорядочение (что не гарантируется при использовании словаря)