如何执行此搜索结果?

时间:2011-12-01 00:09:09

标签: sql asp.net-mvc-3

我有一个关于LINQ的问题,我不知道如何得到我需要的结果。

在我的社交网络中,我有关注者登录,我还有一个搜索框,可以找到通过姓名或电子邮件关联的关注者。

我的问题是,我不知道如何得到这个结果。拥有用户的昵称或电子邮件,搜索相关的粉丝。

这是我的追随者表:

----------------------------
| ID | UserID | FollowerID |
----------------------------

我的用户表(仅限我需要的列)

-------------------------------------
| ID | Email | Nickname | Thumbnail |
-------------------------------------

我的搜索框将能够按昵称或电子邮件搜索结果。

我尝试执行此查询:

SELECT u.ID, u.Thumbnail, u.Nickname, u.Email
FROM dbo.[User] u
INNER JOIN dbo.Followers f
ON f.FollowerID = u.ID
WHERE f.UserID=4 and u.Nickname LIKE 'Laura'
ORDER BY u.Nickname

在这种情况下,我将是UserID = 4,我将能够执行我的粉丝的搜索请求...

有人可以帮我执行此查询吗?

2 个答案:

答案 0 :(得分:3)

可能你正在寻找这样的东西。

假设您的搜索框包含输入Laura,我认为您要搜索包含文字NickName的列EmailLaura

LIKE '%Laura%'会在列中的任何位置返回包含 Laura 文本的行。

LIKE 'Laura%'将返回列文本以文本 Laura 开头的行。

只需拥有LIKE 'Laura',只会返回与 Laura 文本完全匹配的行。

SELECT      u.ID
        ,   u.Thumbnail
        ,   u.Nickname
        ,   u.Email
FROM        dbo.[User]      u
INNER JOIN  dbo.Followers   f
ON          f.FollowerID    = u.ID
WHERE       f.UserID        = 4 
AND         (
                    u.Nickname  LIKE '%Laura%'
                OR  u.Email     LIKE '%Laura%'
            )
ORDER BY    u.Nickname

示例数据:

Sample

答案 1 :(得分:0)

var results = from u in users 
              join f in followers on f.Userid equals u.id
              where u.Nickname.Contains('Laura') || u.Email.Contains('Laura') 
                    && f.UserID==4
              select new {ID = u.ID, 
                          Thumbnail = u.thumbnail, 
                          Nickname = u.Nickname, 
                          Email = u.Email }