Заполнение коллекции в списке
Я думаю, что мой синтаксис запроса LINQ неправильный.
Вот краткое изложение того, что я пытаюсь сделать
- У меня есть список людей (ICollection of Person) и список адресов (ICollection of Address)
- У человека может быть несколько адресов (таким образом, у человека есть свойство Addresses типа ICollection)
- Каждый адрес также имеет PersonId, чтобы связать его с человеком
- Предполагая, что у меня есть эти две коллекции, но у коллекции Person нет заполненных адресов, и ** Я хочу заполнить коллекцию адресов... почему ниже не работает Linq?
- Он не заполняет коллекцию адресов, но не выдает ошибку
Вопрос в том, что если у меня есть обе коллекции с данными и у них совпадающие типы, правильный ли ниже синтаксис запроса Linq?
// people is an ICollection<Person> // addressList is an ICollection<Address> var query = from person in People select new Person { Id = person.Id, Name = person.Name, adresses = (from address in addressList where address.PersonId == person.Id select address).ToList() };
2 ответа
Я думаю, что ваша ошибка в инициализаторе вашего объекта. Вы должны установить свойства следующим образом:
select new Person
{
Id = person.Id,
Name = person.Name,
adresses = (from address in addressList
where address.PersonId == person.Id
select address).ToList()
};
Я бы предложил использовать.GroupJoin для работы:
var result = People.GroupJoin(addressList, p => p.Id, a => a.PersonId,
(p, addresses) => new Person {
Id = p.Id,
name = p.Name,
addresses = addresses });