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

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

2 Comments

  1. здесь linq и не пахнет, всего лишь лямбда выражение

  2. Только недавно начал изучать этот LINQ, автору спасибо!

Leave a Reply

Your email address will not be published. Required fields are marked *

http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_good.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif