Не приятно, но это будет работать. Хитрость заключается в том, чтобы использовать перегрузку, обеспечивающую индекс элемента.
list = list.Select((item, index) => { item.Id = index; return item; });
Это обновит существующие заказы, но вы также можете выбрать новый экземпляр с установленным идентификатором и избежать этого ужасного return
за счет дублирования заказов и потери ссылок, как предлагает Скотт Айви. И, конечно, вы должны добавить один, если вы хотите идентификаторы на основе одного.
Мне тоже немного странно создавать идентификаторы таким образом, но это может быть приемлемым решением, если вы получаете список новых заказов без идентификатора и хотите их сгенерировать. В этом случае идентификаторы должны начинаться не с нуля или единицы, а с самого большого уже назначенного идентификатора плюс один.