是否存在任何简单的解决方案,这将允许我使用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>
答案 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);
答案 1 :(得分:0)
for non linq way
创建新列表toRemove
foreach通过paths.keys
在循环内部通过过滤器
如果key.contains(filter)----可能想要将toupper()或tolower()添加到两者
然后将键添加到toRemove
然后预约到去除 调用paths.remove(toRemoveStr);