问题
I have the following Models and ViewModels (edited for brevity):
Order Model:
OrderId
ShippingAddressId
.....
Address Model:
AddressId
.....
OrderViewModel:
Some Property from Order Model and Address Model
how can inner join two tables and map to a viewmodel ?
var query= from o in ctx.Orders
join addr in ctx.Addresses
on o.ShippingAddressId equals addr.AddressId
select new OrderViewModel.InjectFrom(o)
.InjectFrom(addr)
as OrderViewModel;
this code doesn't work .
回答1:
You need to first materialize the result with ToList
:
var query = (from o in ctx.Orders
join addr in ctx.Addresses
on o.ShippingAddressId equals addr.AddressId
select new { o, addr }
).ToList()
.Select(x => new OrderViewModel().InjectFrom(x.o)
.InjectFrom(x.addr)
as OrderViewModel);
来源:https://stackoverflow.com/questions/11988573/mapping-linqtoentities-join-to-viewmodel