Заменить элементы одной коллекции на элементы другой коллекции - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, у меня такой вопрос: есть 2 коллекции:
Листинг программы
  1. List<Person> list1 = new List<Person>
  2. {
  3. new Person
  4. {
  5. name = "Jon",
  6. id = 1
  7. },
  8. new Person
  9. {
  10. name = "Marc",
  11. id = 2
  12. },
  13. new Person
  14. {
  15. name = "Alex",
  16. id = 3
  17. },
  18. new Person
  19. {
  20. name = "Jeffri",
  21. id = 4
  22. },
  23. new Person
  24. {
  25. name = "Adam",
  26. id = 5
  27. },
  28. };
  29.  
  30. List<Person> list2 = new List<Person>
  31. {
  32. new Person
  33. {
  34. name = "Pavel",
  35. id = 1
  36. },
  37. new Person
  38. {
  39. name = "Oleg",
  40. id = 2
  41. },
  42. new Person
  43. {
  44. name = "Denis",
  45. id = 3
  46. },
  47. };
Как можно без всяких циклов заменить элементы коллекции list1 на элементы коллекции list2 которые совпадают по id ? и чтоб остальные элементы list1, которые не совпали с другими остались бы в ней, есть ли какой-нибудь самый быстрый способ?

Решение задачи: «Заменить элементы одной коллекции на элементы другой коллекции»

textual
Листинг программы
  1. using System.Linq;
  2.  
  3. static class Program
  4. {
  5.     static void Main()
  6.     {
  7.         var list1 = new[] { "Jon", "Marc", "Alex", "Jeffri", "Adam" }
  8.             .Select((name, index) => new Person { id = index + 1, name = name })
  9.             .ToList();
  10.         var list2  = new[] { "Pavel", "Oleg", "Denis" }
  11.             .Select((name, index) => new Person { id = index + 1, name = name })
  12.             .ToList();
  13.         var result = list1.Select(person =>
  14.                 list2.SingleOrDefault(p => p.id == person.id) ?? person);
  15.     }
  16.     class Person
  17.     {
  18.         public string name { get; set; }
  19.         public int id { get; set; }
  20.     }
  21. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы