我认为我的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()
};
答案 0 :(得分:5)
我认为您的错误在于您的对象初始化程序。您应该设置如下属性:
select new Person
{
Id = person.Id,
Name = person.Name,
adresses = (from address in addressList
where address.PersonId == person.Id
select address).ToList()
};
答案 1 :(得分:1)
我建议使用.GroupJoin来完成这项工作:
var result = People.GroupJoin(addressList, p => p.Id, a => a.PersonId,
(p, addresses) => new Person {
Id = p.Id,
name = p.Name,
addresses = addresses });