Для этого вы можете использовать Join
в синтаксисе метода расширения или в синтаксисе LINQ:
Метод расширения:
foreach(var favorite in myFavoriteBooks.Join(allBooks,
f => f.Name,
a => a.Name,
(f, a) => a))
{
a.IsFavorite = true;
}
LINQ:
var favorites = from f in myFavoriteBooks
join a in allBooks on f.Name equals a.Name
select a
foreach(var favorite in favorites)
{
favorite.IsFavorite = true;
}
Эти решения функционально идентичны; они отличаются только синтаксисом и работают быстрее, чем исходное решение, поскольку LINQ создаст хеш-таблицу с обеих сторон и использует ее для сопоставления, а не сканирует другой список для каждого элемента в исходном списке.