Dictionary(int key,list<x> y)
В y есть элементы name
Если y.name != ключу в котором лежит лист, то удали этот элемент из листа.
Нужно сделать пробег по всему Dictionary.
Я пробовал foreach,но он ругается на то, что, когда удаляешь элемент листа, пишет что лист модифицирован.
Ещё один вариант, в функциональном стиле:
dict = dict.Where(item => item.Key == item.Value.name)
.ToDictionary(item => item.Key, item => item.Value);
Вы создаёте полностью новый словарь, и заменяете старый на новый, так что никакой модификации нет.
При этом вы подменяете объект, так что те, у кого была своя ссылка на ваш объект, будут работать со старой версией словаря. Это может быть то или не то, что вы хотите, в зависимости от того, как устроена ваша программа. (Например, если другие пользователи вашего словаря работают с ним, они могут не рассчитывать на то, что словарь поменяется.)
public class list
{
public int name { get; set; }
}
Dictionary<int, list> dict = new Dictionary<int, list>();
dict[1] = new list() { name = 100 };
dict[2] = new list() { name = 2 };
dict[3] = new list() { name = 300 };
foreach (var mismatch in dict.Where(item => item.Key != item.Value.name).ToList())
{
dict.Remove(mismatch.Key);
}
Продвижение своими сайтами как стратегия роста и независимости