Why do changes made in foreach to a Linq grouping select get ignored unless I add ToList()?
问题 I have the following method. public IEnumerable<Item> ChangeValueIEnumerable() { var items = new List<Item>(){ new Item("Item1", 1), new Item("Item2", 1), new Item("Item3", 2), new Item("Item4", 2), new Item("Item5", 3) }; var groupedItems = items.GroupBy(i => i.Value) .Select(x => new Item(x.First().Name, x.Key)); foreach (var item in groupedItems) { item.CalculatedValue = item.Name + item.Value; } return groupedItems; } Into the groupedItems collection the CalculatedValue s are null.