【发布时间】:2019-11-11 17:56:43
【问题描述】:
我有一个 Dictionary (of Long, Class),其中 Class 有多个属性(假设我们有一个名为 Updated as Boolean 的属性。
我想立即将此(更新)属性更新为(真),比如说所有奇数键记录(或基于任何特定规则)。最好的方法是什么?
我的想法是使用 Linq 来获取这些记录,然后(对于每个)它们,但是有没有更好的方法来做到这一点,比如在发生条件的地方进行大规模更新(比如我们在数据库中所做的)?
我的方法的一个例子如下。如果有更好的方法来做这样的更新,不胜感激......
谢谢
Dim ReturnedObjs = From Obj In Dictionary Where Obj.Key Mod 2 = 1
For Each item As KeyValuePair(Of Long, Class) In ReturnedObjs
item.Value.Updated = True
Next
【问题讨论】:
-
这听起来像是 Speed Rant 的案例:ericlippert.com/2012/12/17/performance-rant
-
那么您目前的方法有什么问题?你想解决什么问题?
-
如果您每 100 毫秒都有数据,并且您想更新 10k 条记录(甚至更多),这将很有用:) 我正在尝试以最好的方式优化它。如果有一种方法可以直接更新所有记录,那就太好了(例如,当我们在 SQL 中说“更新表集属性 = True where Value > 0”时)
-
您可以为 Linq 编写相当于
For Each的循环,但即便如此,您也只是隐藏了迭代。我不明白这一点;相当多的 Linq 对查询理解或延迟执行很有用,这不会起到任何作用。您将需要进行迭代,不妨将其明确化(尤其是当您需要更新枚举变量的多个属性时)。
标签: c# .net vb.net linq dictionary