我有以下情况。我有一个带有“Id”的项目列表。我必须搜索具有特定 id 的项目,修改其值并维护集合的顺序。最好的方法是什么?
var collection = <some_linq_query>
collection.Where(i=>i.Id=someId).FirstOrDefault().Property = "bla";
// now collection should be the same but the item updated.
最佳答案
对Where的调用不会修改存储在collection
中的原始LINQ查询。以任何方式。相反,它创建了一个新的 IEnumerable<T>
其中 是原始查询的子集。该子集将具有与 collection
中的原始集相同的相对顺序。
这可能导致问题的唯一方法是值 collection
是一个 LINQ where ,它有一个Where子句,或者基于 Property
的值进行过滤。 。如果是这种情况,并且您希望通过 .ToList 将订单强制集合保留到非惰性计算结构中。
collection = collection.ToList();
关于c# - 如何修改 IEnumerable 集合中的项目并保留其顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2248602/