2011-12-01 122 views
2

我有一个关于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 

在这种情况下,我将用户ID = 4,和我将能够执行我的追随者的搜索请求......

莫非任何人都可以帮我执行这个查询?

回答

3

也许您正在寻找类似的东西。

假设你的搜索框中包含输入Laura,我相信您要搜索的列NickNameEmail包含文本Laura

LIKE '%Laura%'将返回包含文本劳拉在列的任何地方行。

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

只要有LIKE '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

+0

它不给我带来的结果...我有用户ID = 4在我的追随者表,我有劳拉,其中用户名= 2作为FollowerID = 2在关注者表中,并且我在我的用户表中拥有昵称'Laura'...所以它应该为我带来结果'Laura' ... –

+0

谢谢Siva,我正在切换UserID和FollowerID在我的FOL降低表格。 –

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 }