Столкнулся с задачей обновления значение в одном списке, если такое же значение есть в другом списке.
Допустим, у нас есть два класса:
Первый:
class First
{
public int Id;
public string Name;
public bool IsSelected;
}
Второй:
class Second
{
public int Id;
public string Name;
}
Дальше мы получаем две коллекции:
ObservableCollection<First> first = new ObservableCollection<First>()
{
new First(Id = 1, Name = "Name1", IsSelected = false),
new First(Id = 2, Name = "Name2", IsSelected = false),
new First(Id = 3, Name = "Name3", IsSelected = false)
};
ObservableCollection<Second> second = new ObservableCollection<Second>()
{
new Second(Id = 2, Name = "Name2"),
new Second(Id = 3, Name = "Name3")
};
Если использовать обынчый перебор, то необходимо сделать следующее:
foreach(First f in first)
foreach(Second s in second)
if(f.Id == s.Id)
f.IsSelected = true;
С помощю LINQ всё можно сделать намного проще:
foreach (var f in first) f.IsSelected = second.Any(s => s.Id == f.Id);
Вот так всё просто!![]()

здесь linq и не пахнет, всего лишь лямбда выражение
Только недавно начал изучать этот LINQ, автору спасибо!