Вот мой объект пользователя:
public class User
{
public int UserId { get; set; }
public string Name { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
В моем контроллере я выбираю пользователя, вошедшего в систему в данный момент, на основании его идентификатора пользователя:
User CurrentUser = Db.Users.Find((int)Session["UserId"]);
Далее я выбираю списокиз всех пользователей, кроме текущего зарегистрированного пользователя:
List<User> Users = Db.Users.Where(u => u.UserId != CurrentUser.UserId).ToList();
Вот где это действительно сбивает с толку: я хочу отсортировать этот список пользователей на основе того, насколько близко их списки тегов сравниваются со списком зарегистрированных в данный момент пользователей.тегов.Например, предположим, что пользователь A, который в данный момент вошел в систему, имеет следующий список тегов:
List<Tag> CurrentUserTags = new List<Tag>
{
new Tag
{
TagId = 1
},
new Tag
{
TagId = 2
},
new Tag
{
TagId = 3
}
}
Пользователь B имеет теги 1 и 2. Пользователь C имеет только тег 1. Я хочу отсортировать списокпользователей B следующим образом: пользователь B, затем пользователь C, поскольку список тегов пользователя B сравнивается более близко со списком тегов пользователя A, чем со списком пользователя C.
Я действительно надеюсь, что это имеет смысл, поскольку я полностью застрял.