2012-05-07 14 views
0

用戶:如何檢查linq到sql中的以下方案?

userid username    password 
1  venkat reddy   sa 
2  reddy     as 
3  re      sa 

地點:

id userid    lat   lon 
1  1    14.00  15.00 
2  2    15.00  17.23 
3  3    15.00  17.23 

好友:

id userid  friendid   isActive 
1  1   2     true 
1  2   1     true 

我需要查詢像如果我通過userid=1username=re,那麼我需要獲得以re開頭的所有行,並且如果該用戶已經是userid的朋友,則會給出狀態消息,如already friend和他的用戶名和用戶標識。如果用戶現在不是朋友,那麼請提供他的詳細信息,如用戶名和用戶標識。

請告訴我....

例如:用戶ID = 1的用戶名=重新

然後我需要輸出如下

<OutputResponse> 
    <Response> 
     <userid>2</userid> 
     <username>reddy</username> 
     <lat>15.00</lat> 
     <lon>17.23</lon> 
     <status>already friend</status> 
    </Response> 
    <Response> 
     <userid>3</userid> 
     <username>re</username> 
     <lat>15.00</lat> 
     <lon>17.23</lon> 
     <status>not a friend as of now</status> 
    </Response> 
</OutputResponse> 

回答

0

你可以像這樣的東西開始...

int userid=1; 
string username="re"; 

var result=(from q in Users 
       join qq in Location on q.id equals qq.userid 
      where q.Username.StartsWith(username)  
      select new 
      { 
       userid=q.Id, 
       username=q.Username, 
       lat=l.lat, 
       lon=l.lon, 
       status=Friends.Where(z=>z.Friendid==q.Id&&z.Userid==userid).Count()>0?"already friend":"not a friend as of now" 

      });