Запрос к Many-To-Many используя Linq

328
15 февраля 2017, 20:45

Имею такие таблицы созданые через EF

Первая и последняя таблицы имеют классы

 public class Work
 {
    public Work()
    {
        Tags = new HashSet<WorkTag>();
    }
    [Key]
    public int WorkID { get; set; }
    [Required]
    [StringLength(50, MinimumLength = 5, ErrorMessage = "The length of the string must be 5 to 50 characters")]
    public string Title { get; set; }
    [Required(ErrorMessage = "Please add the image!")]
    [Display(Name = "Main image")]
    public byte[] MainImage { get; set; }
    public List<Image> Images { get; set; }
    [Required]
    public string Content { get; set; }
    [Required]
    [Display(Name = "Install instruction")]
    public string InstallInstruction { get; set; }
    public virtual ICollection<WorkTag> Tags { get; set; }
}
public class WorkTag
{
    public WorkTag()
    {
        Works = new HashSet<Work>();
    }
    [Key]
    public int TagID { get; set; }
    [Required]
    public string Name { get; set; }
    public virtual ICollection<Work> Works { get; set; }
}

Связывающая таблица создается автоматически, но проблема в том что мне нужно работать с ней.

Задача состоит в том, чтобы погруппировать WorkTagWorks по TagId и вывести только 5 самых частых записей.

Answer 1

Так как в таблице WorkTags все значения в колонке TagID уникальны, то и коллекцию WorkTags можно считать сгруппированной выборкой по WorkTagWorks. Таким образом, остается лишь посчитать сколько Works связано с конкретным WorkTag и выбрать те из них, у который больше всего Works.

context.WorkTags.Select(t => new { 
  TagId = t.TagId, 
  TagName = t.Name, 
  WorksCount = t.Works.Count() 
}).OrderByDescending(t => t.WorksCount)
.Take(5);
READ ALSO
Как сделать backup/restore базы MSSQL программно

Как сделать backup/restore базы MSSQL программно

Как можно сделать backup/restore базы данных MSSQL программно на C#? Пользователь выбирает место сохранения (например, флешку) и база сохраняется

336
как сделать ссылку с двумя параметрами?

как сделать ссылку с двумя параметрами?

Вопрос такой как сделать что бы в одной ссылке передавалось 2 get параметра

327
ограничить дерево комментариев

ограничить дерево комментариев

Есть функция которая отлично собирает дерево

291
WordPress: Как убрать sidebar для Страницы записей?

WordPress: Как убрать sidebar для Страницы записей?

Здравствуйте, Вопрос заключается в следующем: Каким образом (без использования плагинов) я могу убрать sidebar со Страницы Записей?

559