我有一个外部循环迭代在字典中匹配的子字符串数组.在内部循环中,我想迭代字典并删除其键包含子字符串的条目.如何在不收到"Collection was modified Exception"的情况下执行此操作?
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);
        }
}
Run Code Online (Sandbox Code Playgroud)
    你需要一个新的集合:
List<string> todelete = dictionary.Keys.Where(k => k.Contains("substring")).ToList();
todelete.ForEach(k => dictionary.Remove(k));
Run Code Online (Sandbox Code Playgroud)
或者foreach:
foreach (string key in todelete)
    dictionary.Remove(key);  // safe to delete since it's a different collection
Run Code Online (Sandbox Code Playgroud)
如果Dictionary.Keys实现IList而不仅仅是ICollection你可以在向后for循环中访问它以删除它们.但由于没有索引器,你不能.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           6190 次  |  
        
|   最近记录:  |