Вы пытаетесь удалить одно значение или все совпадающие значения?
Если вы пытаетесь удалить одно значение, как вы определяете значение, которое хотите удалить?
Причина, по которой вы не получаете ключ назад при запросе значений, заключается в том, что словарь может содержать несколько ключей в паре с указанным значением.
Если вы хотите удалить все совпадающие экземпляры одного и того же значения, вы можете сделать это:
foreach(var item in dic.Where(kvp => kvp.Value == value).ToList())
{
dic.Remove(item.Key);
}
И если вы хотите удалить первый соответствующий экземпляр, вы можете запросить, чтобы найти первый элемент, и просто удалите это:
var item = dic.First(kvp => kvp.Value == value);
dic.Remove(item.Key);
Примечание: Вызов ToList()
необходим для копирования значений в новую коллекцию. Если вызов не выполнен, цикл будет модифицировать коллекцию, по которой он повторяется, вызывая исключение при следующей попытке повторения после удаления первого значения.