我有一个关于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,我将能够执行我的粉丝的搜索请求...
有人可以帮我执行此查询吗?
答案 0 :(得分:3)
可能你正在寻找这样的东西。
假设您的搜索框包含输入Laura
,我认为您要搜索包含文字NickName
的列Email
和Laura
。
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
示例数据:
答案 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 }