Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字典中删除元素_C#_Linq - Fatal编程技术网

C# 从字典中删除元素

C# 从字典中删除元素,c#,linq,C#,Linq,是否存在任何简单的解决方案,允许我使用LINQ解决下一个问题 e、 g.我有字典路径 其中包含以下元素 <"/abc/12", 13> <"/test/abc", 22> <"/stack/overflow/com", 43> <"/stack/exception", 4> "/abc" "/stack/overflow" 我需要从路径字典中删除这些元素,这些元素的键不是从过滤器列表中提供的任何字符串开

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

e、 g.我有字典路径

其中包含以下元素

   <"/abc/12", 13>

   <"/test/abc", 22>

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

   <"/stack/exception", 4>
   "/abc"
   "/stack/overflow"
我需要从路径字典中删除这些元素,这些元素的键不是从过滤器列表中提供的任何字符串开始的。所以我应该得到以下结果:

   <"/abc/12", 13>

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

您可以使用Linq:

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

用于非linq方式

创建要删除的新列表

foreach通过路径。键

在该循环中,通过过滤器进行过滤

if key.contains(filter)--可能希望将toupper()或tolower()添加到这两个函数中
然后将密钥添加到删除

然后再往前走
调用路径。删除(toRemoveStr)

答案很可能是肯定的,但如果您展示您已有的“不那么简单”解决方案,我会更好。您需要在第一条语句中使用
ToList()
或类似的内容。别忘了LINQ是延迟的,因此,当您从路径中删除时,foreach将抛出一个异常,因为枚举数将变得混乱。
toDeletes.Reverse()
解决了修改集合的问题。@TimSchmelter这正是我要搜索的。Thanks@SPFiredrake:但是,值得注意的是,如果
字典
很大,并且您只想删除一些键值对,那么使用
删除
可能更有效。