Не используйте LINQ, потому что это не улучшит код, потому что LINQ предназначен для сбора запросов, а не для их изменения. Я предлагаю следующее.
// Just realized that Array.IndexOf() is a static method unlike
// List.IndexOf() that is an instance method.
Int32 index = Array.IndexOf(this.Properties, name);
if (index != -1)
{
this.Properties[index] = value;
}
else
{
throw new ArgumentOutOfRangeException();
}
Почему методы Array.Sort () и Array.IndexOf () статичны?
Далее я предлагаю не использовать массив. Попробуйте использовать IDictionary<String, Property>
. Это упрощает код до следующего.
this.Properties[name] = value;
Обратите внимание, что ни одно из решений не является поточно-ориентированным.
Специальное решение LINQ - вы не должны его использовать, потому что весь массив будет заменен новым.
this.Properties = Enumerable.Union(
this.Properties.Where(p => p.Name != name),
Enumerable.Repeat(value, 1)).
ToArray();