从字典中删除元素

时间:2012-12-13 19:43:24

标签: c# linq

是否存在任何简单的解决方案,这将允许我使用LINQ解决下一个问题。

e.g。我有 Dictionary< string,int>路径;

包含以下元素

   <"/abc/12", 13>

   <"/test/abc", 22>

   <"/stack/overflow/com", 43>

   <"/stack/exception", 4>

我有一个 List&lt; string&gt;过滤器,其中包含以下元素

   "/abc"
   "/stack/overflow"

我需要从路径字典中删除这些元素,哪些键不从过滤器列表中提供的任何字符串开始。所以我应该得到以下结果:

   <"/abc/12", 13>

   <"/stack/overflow/com", 43>

2 个答案:

答案 0 :(得分:2)

您可以使用Linq:

var toDelete = paths
    .Where(kv => !filter.Any(f => kv.Key.StartsWith(f)));
foreach(var delete in toDelete.Reverse())
    paths.Remove(delete.Key);

Demo

答案 1 :(得分:0)

for non linq way

创建新列表toRemove

foreach通过paths.keys

在循环内部通过过滤器

如果key.contains(filter)----可能想要将toupper()或tolower()添加到两者
然后将键添加到toRemove

然后预约到去除 调用paths.remove(toRemoveStr);