任何人都可以帮助我创建一种执行以下操作的良好方式吗?:
我有一些用户对一些不同的项目进行评分。
为了给用户提供好的推荐,我需要找到有相似品味的用户。这样我就可以从其他具有相似品味的用户那里推荐高评价的商品。
我的数据来自使用实体框架映射的数据库。
我有一个有效的算法,但在很多循环方面表现不佳。有任何想法吗?
/肯特
namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
const int NoOfUsers = 100;
const int NoOfRatingsPerUser = 100;
const int NoOfDifferentItems = 100;
var listOfRatings = new List<Rating>();
var r = new Random();
for (int user = 0; user < NoOfUsers; user++)
{
for (int ratingsPerUser = 0; ratingsPerUser < NoOfRatingsPerUser; ratingsPerUser++)
{
var rating = new Rating();
rating.Score = r.Next(1, 10);
rating.ItemId = r.Next(1, NoOfDifferentItems);
rating.UserId = user;
listOfRatings.RemoveAll(x => x.UserId == user && x.ItemId == rating.ItemId);
listOfRatings.Add(rating);
}
}
Console.ReadLine();
}
struct Rating
{
public int ItemId;
public int Score;
public int UserId;
}
}
}