Для этого вам понадобится Dictionary<string,object>
.К сожалению, коллекции разрешают только произвольный доступ по индексу.
Вы можете сделать что-то вроде этого:
var item = MyCollection
.Where(x => x.SomeProp == "Birthday")
.FirstOrDefault();
// careful - item could be null here
var value = item.Value;
Но это будет далеко не так эффективно, как произвольный доступ по индексу.