Упростить foreach с использованием linq
Есть коллекция. Я делаю запрос в бд и если там появились новые записи, я их добавляю в мою коллекцию Как можно упростить этот кусок кода? Чтобы не использовать foreach, только с помощью linq?
foreach (MyTask task in query)
{
if(!currentTaskCollection.Any(item => item.Id == task.Id))
currentTaskCollection.Add(task);
}
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
поробуйте так
query.ToList().ForEach( task => {
if(!currentTaskCollection.Any(item => item.Id == task.Id))
currentTaskCollection.Add(task);
} );
Автор решения: CrazyElf
→ Ссылка
Я бы, наверное, сделал как-то так, если id в query заведомо не повторяются:
idsExcept = currentTaskCollection.Select(x => x.Id).ToHashSet();
currentTaskCollection = currentTaskCollection.Concat(query.Where(x => !idsExcept.Contains(x.Id))