Заменить элементы одной коллекции на элементы другой коллекции - 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; }
}
}