Здравствуйте. У меня небольшая проблема с назначением значений свойств из одного списка элементов другим. Я знаю, что могу решить это «по-старому», перебирая оба списка и т. Д., Но я ищу более элегантное решение с использованием LINQ.
Давайте начнем с кода ...
class SourceType
{
public int Id;
public string Name;
// other properties
}
class DestinationType
{
public int Id;
public string Name;
// other properties
}
List<SourceType> sourceList = new List<SourceType>();
sourceList.Add(new SourceType { Id = 1, Name = "1111" });
sourceList.Add(new SourceType { Id = 2, Name = "2222" });
sourceList.Add(new SourceType { Id = 3, Name = "3333" });
sourceList.Add(new SourceType { Id = 5, Name = "5555" });
List<DestinationType> destinationList = new List<DestinationType>();
destinationList.Add(new DestinationType { Id = 1, Name = null });
destinationList.Add(new DestinationType { Id = 2, Name = null });
destinationList.Add(new DestinationType { Id = 3, Name = null });
destinationList.Add(new DestinationType { Id = 4, Name = null });
Я бы хотел добиться следующего:
- destinationList должен быть заполнен Именами соответствующих записей (по Id) в sourceList
- destinationList не должен содержать записи, которые не присутствуют в обоих списках одновременно (например, Id: 4,5 следует исключить) - что-то вроде внутреннего соединения
- Я бы хотел избежать создания нового destinationList с обновленными записями, поскольку оба списка уже существуют и очень велики,
так что нет "конвертировать" или "выбрать новый".
В конце destinationList должен содержать:
1 "1111"
2 "2222"
3 "3333"
Есть ли какое-нибудь элегантное (однострочное лямбда?) Решение для этого с помощью LINQ?
Любая помощь будет принята с благодарностью! Спасибо!