c# - 如何修改 IEnumerable 集合中的项目并保留其顺序

标签 c# linq

我有以下情况。我有一个带有“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/

相关文章:

c# - asp.net mvc 的动态服务

c# - 为 SQLCommand 提供新的 SQLConnection 是否会在新的 SQL 连接上调用 Dispose?

c# - ContinueWith 作为 await 运算符的替代

c# - 如何在 Entity Framework 中查询名字和姓氏?

c# - 如何与用户控件关联的只读文本框?

c# - Properties.Settings 添加 LINQ to SQL 后的歧义

c# - Linq Expression - 如何使用 Expression.And 正确初始化?

c# - 在 LINQ 中反转嵌套集合

c# - Linq 查询后从 Xdocument 获取文件名

c# - XML 到 IEnumerable<T>