我有列表List<PersonDTO>
。
PersonDTO
定义如下:
PersonDTO
{
public int PersonId;
public int Name;
public int OrderId;
public string OrderName;
public string OrderType;
}
有一个Person
类,其中包含如下所述的订单列表
Person
{
public int PersonId;
public int Name;
List<Orders> orders;
}
public Order
{
public int OrderId;
public string OrderName;
public string OrderType;
}
我希望按PersonDTO
对PersonId
列表进行分组,并生成Person
个对象列表,以便该人的所有订单都在List<Orders>
。< / p>
如何使用LINQ实现此目的。
非常感谢!
答案 0 :(得分:1)
看起来这就是你想要的:
var people = personDTOs.GroupBy(i => i.PersonId).Select(
// Each PersonId group projects a single Person object.
i => new Person() {
PersonId = i.Key,
// Assuming that all names in this group are the same.
Name = i.First().Name,
// The elements in the group are used to project Order objects.
orders = i.Select(o => new Order() {
OrderId = o.OrderId,
OrderName = o.OrderName,
OrderType = o.OrderType
}).ToList()
}).ToList();
答案 1 :(得分:0)
你可以这样做:
List<PersonDTO> list = new List<PersonDTO>();
List<Person> personList = list.GroupBy(r => r.PersonId)
.Select(grp => new Person()
{
PersonId = grp.Key,
Name = grp.First().Name,
orders = grp.Select(r => new Order()
{
OrderId = r.OrderId,
OrderName = r.OrderName,
OrderType = r.OrderType
}).ToList()
}).ToList();
但请记住,如果您的Person
和Order
类是通过Entity框架或LINQ To SQL生成的,则无法在投影中使用它们。