查询帮助:实体框架

本文关键字:框架 实体 帮助 查询 | 更新日期: 2023-09-27 18:21:40

我的数据库中有这个表:

ID    userID  MovieID  Rank
1      1        1        9
2      1        2        9
3      1        3        9
4      2        1        9
5      2        2        10

我想查询它,以获得两个用户之间的相互电影,他们的评分相同。

例如,在这种情况下,movieID=1被用户1和用户2都评为"9"。

所以我只想得到电影1的结果。

--更新--

所以我想出了这个(感谢@RJ1990)

SELECT        MovieID
FROM            LoverMovie
WHERE        (LoverID = 1) OR
                         (LoverID = 2)
GROUP BY MovieID
HAVING        (COUNT(*) > 1) AND (ABS(MAX(Rank) - MIN(Rank)) < 3)

这种查询可以用EF(DbContext)编写吗?

查询帮助:实体框架

方法:

从下面的查询中,您将获得相似评分超过一个的特定电影的MovieIDRateRate_Count

select MovieID,Rank,Count(*) Rate_Count
  from your_table
 group by MovieID,Rank
having Count(*) > 1

目前还不清楚您尝试了什么以及面临了什么问题。但这个查询返回的电影有不止一票:

from m in db.Movies // assume you have Movies table
join mr in db.MovieRates 
     on m.ID equals mr.MovieID into g // and MovieRates table
where g.Count() > 1
select m

或者,如果您定义了导航属性:

db.Movies.Where(m => m.Rates.Count() > 1)

如果您还需要验证费率是否来自不同的用户,则使用.Select(x => x.UserID).Distinct().Count() > 1而不是.Count() > 1——此条件从费率中选择不同的用户ID。