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

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

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

Всем привет, у меня такой вопрос: есть 2 коллекции:
  List<Person> list1 = new List<Person>
            {
                new Person 
                {
                    name = "Jon",
                    id = 1
                },
                new Person
                {
                    name = "Marc",
                    id = 2
                },
                 new Person 
                {
                    name = "Alex",
                    id = 3
                },
                new Person
                {
                    name = "Jeffri",
                    id = 4
                },
                 new Person 
                {
                    name = "Adam",
                    id = 5
                },
            };

 List<Person> list2 = new List<Person>
            {
                new Person 
                {
                    name = "Pavel",
                    id = 1
                },
                new Person
                {
                    name = "Oleg",
                    id = 2
                },
                 new Person 
                {
                    name = "Denis",
                    id = 3
                },
                
            };
Как можно без всяких циклов заменить элементы коллекции list1 на элементы коллекции list2 которые совпадают по id ? и чтоб остальные элементы list1, которые не совпали с другими остались бы в ней, есть ли какой-нибудь самый быстрый способ?

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

textual
Листинг программы
using System.Linq;
 
static class Program
{
    static void Main()
    {
        var list1 = new[] { "Jon", "Marc", "Alex", "Jeffri", "Adam" }
            .Select((name, index) => new Person { id = index + 1, name = name })
            .ToList();
        var list2  = new[] { "Pavel", "Oleg", "Denis" }
            .Select((name, index) => new Person { id = index + 1, name = name })
            .ToList();
        var result = list1.Select(person => 
                list2.SingleOrDefault(p => p.id == person.id) ?? person);
    }
    class Person
    {
        public string name { get; set; }
        public int id { get; set; }
    }
}

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


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

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

14   голосов , оценка 3.786 из 5
Похожие ответы