Заменить элементы одной коллекции на элементы другой коллекции - C#
Формулировка задачи:
Всем привет, у меня такой вопрос: есть 2 коллекции:
Как можно без всяких циклов заменить элементы коллекции list1 на элементы коллекции list2 которые совпадают по id ?
и чтоб остальные элементы list1, которые не совпали с другими остались бы в ней, есть ли какой-нибудь самый быстрый способ?
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 }, };
Решение задачи: «Заменить элементы одной коллекции на элементы другой коллекции»
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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д