我有一个字典和一个要从字典中删除的键列表.这是我现在的实施:
var keys = (from entry in etimes
where Convert.ToInt64(entry.Value) < Convert.ToInt64(stime)
select entry.Key).ToList();
foreach (var key in keys)
{
etimes.Remove(key);
count--;
}
Run Code Online (Sandbox Code Playgroud)
有什么我可以做的消除foreach循环?
var pruned = etimes.Where(entry => Convert.ToInt64(entry.Value) >=
Convert.ToInt64(stime)).ToDictionary(entry => entry.Key,
entry => entry.Value);
Run Code Online (Sandbox Code Playgroud)
这个语句只是使用LINQ Where函数过滤字典,以选择要保留的项而不是要删除的项(这需要进一步的代码,如您所示).该ToDictionary转换thwe IEnumerable<KeyValuePair<TKey, TValue>>的欲望Dictionary<TKey, TValue>类型,至少是相当简单的,如果不是非常优雅的或有效率,因为需要到指定两个lambda表达式来选择从键和值KeyValuePair(然后创建一个新的字典).说这个,我并不认为这是一个问题,特别是如果字典很小和/或被删除的项目数量很大.
| 归档时间: |
|
| 查看次数: |
3407 次 |
| 最近记录: |