我希望有人可以帮助我完成以下工作。
我的表就像,
(Job)
JobID
CustomerID
JobPartID
Job -> JobPart (One to Many)
(JobPart)
JobPartID
JobID [Foreign Key – ref JobID(JobID)]
Pickup-AddressID [Foreign Key – ref Address(AddressID)]
Destination-AddressID [Foreign Key – ref Address(AddressID)]
Address is a separate table
(Address)
AddressID
HouseNo
Street
City
Etc..
我想要的是,对于特定客户,所有JobPart都有详细地址。
答案 0 :(得分:0)
那甚至不会编译成有效的c#,但我认为你要找的是这样的:
var results =
from j in job
from jp in j.JobParts
where j.CustomerID == 1
select new { jp.PickupAddress, jp.DestinationAddress };
假设您在JobParts
和Addresses
之间设置了正确的导航属性,这将有效。
您可以非常轻松地使用它:
foreach(var record in results)
{
var pickupHouseNo = record.PickupAddress.HouseNo;
var pickupStreet = record.PickupAddress.Street;
// ...
var destinationHouseNo = record.DestinationAddress.HouseNo;
var destinationStreet = record.DestinationAddress.Street;
// do stuff
}
如果你真的想要它们作为平面查询结果,请使用:
var results =
from j in job
from jp in j.JobParts
where j.CustomerID == 1
select new
{
PickupHouseNo = jp.PickupAddress.HouseNo,
PickupStreet = jp.PickupAddress.Street,
// ...
DestinationHouseNo = jp.DestinationAddress.HouseNo ,
DestinationStreet = jp.DestinationAddress.Street,
};