Есть список
var dic = new Dictionaty<string,int>();
Есть отдельно список . Я назвал его stopWords
var stopWords = new List<string>();
Как через linq
сделать двойной цикл, который будет проверять наличие элементов stopWords в словаре dic
? И если совпадения есть то мы удаляем его из dic
.
Я вижу решение с помощью создания двойного цикла, но хотелось бы увидеть через linq
Что-то вроде:
stopWords.ForEach(sw =>
{
dic.Keys.Where(k => k.Contains(sw)).ToList().ForEach(k =>
{
dic.Remove(k);
}
});
Протестить можно тут.
Ключевой момент: k => k.Contains(sw)
использует String.Contains()
метод, который ищет подстроку в строке.
Дополнительная документация:
List.ForEach()
ICollection.Constains()
либо Dictionary.ContainsKey()
Dictionary.Remove()
Вы не должны использовать LINQ только потому, что это модно. LINQ нужно использовать по делу, тогда код будет проще.
Смысл LINQ состоит в Q — Query. LINQ применяется для того, чтобы опросить нужные данные, а не для того, чтобы модифицировать их. С модификацией традиционный код справляется куда лучше.
Я бы сделал как-то так:
var badKeys = dict.Keys.Where(k => stopWords.Any(w => k.Contains(w))).ToList(); // LINQ-опрос
// ToList() нужно, т. к. мы собираемся модифицировать несущую коллекцию
foreach (var key in badKeys) // модификация в традиционном стиле
dict.Remove(key);
Проверка: http://ideone.com/KxrhzQ
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите, каким образом можно распаковать ресурс в определенную папку?
Добрый день, нужно написать программу на C# которая получает при помощи Яндекс метрики число посещений разных сайтовВопрос: реализуемо ли это...
Как из таблицы в DataGrid (WPF) получить число столбцов и строк? в формах было просто : RowCount и ColumnCount а как в wpf ?