在列表中填充集合
本文关键字:集合 填充 列表 | 更新日期: 2023-09-27 18:20:02
我认为我的LINQ查询语法错误。
以下是我尝试做的简要介绍
- 我有一个人员列表(人员集合)和一个地址列表(地址集合)
- 一个人可以有多个地址。(因此Person具有ICollection类型的Addresses属性)
- 每个地址也有一个PersonId,用于将其与一个人关联
- 假设我有这两个集合,但Person集合没有填充地址,并且**我想填充地址集合。。。为什么下面的林克不起作用
- 它不会填充地址集合,但不会引发错误
-
问题是,假设我有两个包含数据的集合,并且它们具有匹配的类型,下面的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() };
我认为您的错误在于对象初始值设定项。你应该这样设置属性:
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 });