gpt4 book ai didi

c# - 如果键包含一些子字符串,如何从字典中动态删除键值对?

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:49 24 4
gpt4 key购买 nike

我有一个外部循环迭代要在字典中匹配的子字符串数组。在内部循环中,我想遍历字典并删除其键包含子字符串的条目。如何在不出现“集合被修改异常”的情况下执行此操作?

foreach (string outerKey in new string[] { "PAYERADDR_PAYERNAME", "RECADDR_RECNAME", "PAYERADDR_ADDR", "RECADDR_ADDR" })
{
foreach (var item in _generalWorksheetData.Where(kvp => kvp.Value.Contains(outerKey)).ToList())
{
_generalWorksheetData.Remove(item.Key);
}
}

最佳答案

你需要一个新的集合:

List<string> todelete = dictionary.Keys.Where(k => k.Contains("substring")).ToList();
todelete.ForEach(k => dictionary.Remove(k));

或使用 foreach:

foreach (string key in todelete)
dictionary.Remove(key); // safe to delete since it's a different collection

如果Dictionary.Keys实现了 IList 而不仅仅是 ICollection 您可以在向后的 for 循环中访问它以删除它们。但由于没有索引器,您不能这样做。

关于c# - 如果键包含一些子字符串,如何从字典中动态删除键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27902108/

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