如何在linq中检查以下场景到sql?

时间:2012-05-07 05:37:17

标签: linq-to-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。如果用户现在不是朋友,那么请提供他的详细信息,例如用户名和用户ID。

请告诉我....

Ex:userid = 1 username = re

然后我需要像

这样的输出
 <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>

1 个答案:

答案 0 :(得分: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"

            });