Обновление списков с помощью LINQ
Столкнулся с задачей обновления значение в одном списке, если такое же значение есть в другом списке.
Допустим, у нас есть два класса:
Первый:
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, автору спасибо!