使用Linq从C#中的字典中删除具有相同值数据的多个键

And*_*ndy 1 c# linq dictionary

我知道必须有更好的方法来做到这一点......也许是LINQ?如果我删除一个值,它会使迭代器无效,这就是为什么我在无限循环内部重新启动进程的原因.我正在寻找一种更容易阅读,维护并最终更快的方法.这是我得到的:

Dictionary<string, string> Channels = //...;
while (true)
{
    var bFound = false;
    foreach(var c in Channels)
    {
        if(c.Value == version)
        {
            Channels.Remove(c.Key);
            bFound = true;
            break;
        }
    }
    if (!bFound) { break; }
}
Run Code Online (Sandbox Code Playgroud)

感谢您帮助优化此例程.

Har*_*rsh 6

根据您的示例,您似乎正在根据与版本值的比较进行删除.

Channels = Channels.Where(x=> x.Value != version)
              .ToDictionary(c => c.Key, c => c.Value);
Run Code Online (Sandbox Code Playgroud)