Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq查询以查找两个对象之间的最大相似性_C#_Sql Server_Linq - Fatal编程技术网

C# Linq查询以查找两个对象之间的最大相似性

C# Linq查询以查找两个对象之间的最大相似性,c#,sql-server,linq,C#,Sql Server,Linq,我得到了这个数据库方案: 我正在尝试编写一个Linq查询,该查询将返回在给定用户名的电影中具有相似(ID相同)品味的用户。基本上,我需要找到另一个用户,该用户观看的电影与我的给定用户“Input User”(如果有多个用户观看了最多的电影,那么我需要从列表中选择第一个用户),然后,我需要向我的输入用户推荐那些被发现的用户看过的电影,并且根据“被发现的”用户对这些电影的排名,他没有按照降序排列 我完全迷路了。。到现在为止,我已经得到了电影的结果集(以及它们在“输入用户”的UserMovieRank

我得到了这个数据库方案:

我正在尝试编写一个Linq查询,该查询将返回在给定用户名的电影中具有相似(ID相同)品味的用户。基本上,我需要找到另一个用户,该用户观看的电影与我的给定用户“Input User”(如果有多个用户观看了最多的电影,那么我需要从列表中选择第一个用户),然后,我需要向我的输入用户推荐那些被发现的用户看过的电影,并且根据“被发现的”用户对这些电影的排名,他没有按照降序排列

我完全迷路了。。到现在为止,我已经得到了电影的结果集(以及它们在“输入用户”的UserMovieRank表中的排名),并且不知道如何继续

我的数据库在SQL-SERVER 2008 R2中,如果它对任何人都重要的话


谢谢。

这将找到最匹配的。这不是你想要的100%,而是应该帮助你开始的

 var currentUserMovies=UserMovieRanks.Where(u=>u.userId==userId).Select(m=>m.movieId).ToList();

    var userMovieMatch = TwitterUsers.Where(u => u.userID != userId).Select(tu=>
    {
        var userMovies=UserMovieRanks.Where(u=>u.userId==tu.userID).Select(m=>m.movieId).ToList();
        return new   {
            MovieIds=userMovies,
            Count=userMovies.Count(c=>currentUserMovies.Contains(c)),
            NotWatchedByUser=userMovies.Except(currentUserMovies)
        };
    });

    var bestPick=userMovieMatch.OrderByDescending(o=>o.Count).First();

类似电影是具有相同ID的电影。。因此,如果用户“A”观看了电影:1111222233334444,用户“B”观看了电影:22223333,但用户“C”观看了电影:22223344556666,那么用户“C”将被选中,用户“A”将得到观看电影5555和6666的推荐(显示顺序取决于用户C对它们的排名——从高到低(排名从1到10))因为他还没有看。有很多不同的算法来比较物体的最佳拟合度。我建议在编写任何代码之前,在web上搜索您想要使用的算法。现在你正在设计你的软件,还没有准备好开始编码。假设最相似的用户有一个相同的观察列表。。。那么,选择其他人来推荐新电影不是更好吗?;)