Обновление списков с помощью 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);

Вот так всё просто!

Поделиться в соц. сетях

Опубликовать в Facebook
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Google Buzz
Опубликовать в Одноклассники
Опубликовать в Яндекс
Опубликовать в Мой Мир

Похожие статьи

Комментарии (2) на “Обновление списков с помощью LINQ”

Добавить комментарий для xil