c#将一个到多个对象的查询映射到复杂类型
本文关键字:查询 映射 复杂 类型 对象 一个 | 更新日期: 2023-09-27 18:18:32
我有一个自定义类型的列表,我想将这个自定义类型映射到另一个复杂类型,以表示一对多关系。
ViewModel
类包含如下数据:
id name address
1 a add1
1 b add2
1 c add3
2 aa aaAdd
2 cc ccAdd
3 aaa aaaAdd
我代码:public class A //class to map
{
public int? Id { get; set; }
public List<B> Data { get; set; }
}
public class B
{
public string Name { get; set; }
public string Address { get; set; }
}
var data= context.Database.SqlQuery<ViewModel>(query).ToList();
// query to get data, I want to map this ViewModel to List<A> class.
我可以按顺序来做,但我想要另一个解决方案。
我可以这样得到A课的结果吗?
[
{id='1',[{a,add1},{b,add2},{c,add3}]},
{id='2',[{aa,aadd1},{cc,ccdd2}]},
{id='3',[{aaa,aaadd}]}
]
可以使用 GroupBy
,然后使用 Select
构造B
的列表。
var data = context.Database.SqlQuery<ViewModel>(query)
.ToList() // Execute the query first
.GroupBy(q => q.Id)
.Select(g => new A
{
Id = g.Key,
Data = g.Select(b => new B { Name = b.Name, Address = b.Address }).ToList()
})
.ToList();