Итак, вопрос в том, «как я могу изменить код, чтобы он не возвращал ноль, если элемент не найден, но возвращает новый элемент»?
public static Record FindOrCreate(this IEnumerable<Record> source, string name)
{
Func<Record,bool> pred = element => element.Name == name;
return source.Any(pred) ? source.FirstOrDefault(pred) : new Record(name, "");
}
или
public static Record FindOrCreate(this IEnumerable<Record> source, string name)
{
return source.FirstOrDefault(element => element.Name == name) ?? new Record(name, "");
}
Если вопрос «как я могу добавить новый элемент в IEnumerable<Record> source
, то короткий ответ будет невозможен. Чем дольше ответ, приведите источник к ICollection
, а затем добавьте его. Но в этот момент, вы также можете просто указать, что вам нужно ICollection<T>
Примечание. Я не имею в виду «вы не должны», когда я говорю «вы не можете», действительно, IEnumberable не имеет никакого способадобавить элементы. Подумайте о том, что значит попытаться добавить новый номер к следующему seq
public IEnumerable<int> ShortSeq()
{
yield return 0;
}
var seq = ShortSeq();