gpt4 book ai didi

c# - 如何使用 LINQ to "prune"字典?

转载 作者:太空狗 更新时间:2023-10-29 23:11:57 25 4
gpt4 key购买 nike

我有一个字典和一个要从字典中删除的键列表。这是我现在的实现:

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--;
}

有什么办法可以消除 foreach 循环吗?

最佳答案

var pruned = etimes.Where(entry => Convert.ToInt64(entry.Value) >= 
Convert.ToInt64(stime)).ToDictionary(entry => entry.Key,
entry => entry.Value);

此语句仅使用 LINQ Where 过滤字典函数来选择要保留而不是要删除的项目(如您所示,这需要更多代码)。 ToDictionary转换 IEnumerable<KeyValuePair<TKey, TValue>>为了愿望Dictionary<TKey, TValue>类型,并且至少非常简单,如果不是非常优雅或高效,因为需要指定两个 lambda 表达式来从 KeyValuePair 中选择键和值。 (然后创建一个新字典)。话虽如此,我真的不认为这是一个问题,尤其是当字典很小和/或要删除的项目数量很大时。

关于c# - 如何使用 LINQ to "prune"字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com