使用linq进行多次查询

时间:2013-06-04 00:36:49

标签: c# linq multiple-tables

我希望有人可以帮助我完成以下工作。

我的表就像,

(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都有详细地址。

1 个答案:

答案 0 :(得分:0)

那甚至不会编译成有效的c#,但我认为你要找的是这样的:

var results = 
    from j in job
    from jp in j.JobParts
    where j.CustomerID == 1
    select new { jp.PickupAddress, jp.DestinationAddress };

假设您在JobPartsAddresses之间设置了正确的导航属性,这将有效。

您可以非常轻松地使用它:

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, 
    };