2012-05-02 64 views
0

用户:如何一次使用linq to sql连接多个表?

userid name  email 
    1  venkat [email protected] 
    2  venu  [email protected] 
    3  raghu [email protected] 

合作伙伴:

id userid partnerid status 
    1  1  2   1 
    2  1  3   1 

位置:

id userid lat lon 
    1  1  12.00 13.00 
    2  2  14.00 12.00 
    3  3  14.00 14.23 

查询:

var result = from partner in Partners 
       join user in Users on partner.UserId equals user.PartnerId 
       join location in Locations on patner.UserId equals location.PartnerId 
       where partner.UserId == 1 
       select new { PartnerId = partner.PartnerId, PartnerName = user.Name, Lat = location.Lat, Lon = location.Lon }; 

通过传递userid=1作为参数,我得到这个结果:

partnerid patnername  lat   lon 
    2   venkat   14.00   12.00 
    3   venkat   14.00   14.23 

通过上述结果的观察这里partnernames是错误的partnerid = 2 - patnamevenu但显示 “venkat”

partnerid = 3,合作伙伴名称为raghu,但显示venkat

如何显示正确的合作伙伴名称?

回答

1

我相信这JOIN这里是错误的:

var result = from partner in Partners 
      join user in Users on user.UserId equals partner.PartnerId 

你用他PartnerID加入用户自己userId给合作伙伴。

在这两种情况下,您是否需要将用户加入到使用PartnerID的合作伙伴?类似这样的:

var result = from partner in Partners 
      join user in Users on user.PartnerId equals partner.PartnerId