Linq to Entities - 多对多问题:
我有一个Songs表和一个Tag表,其中包含一个多对多表。我想得到每个标签的歌曲数量(一个标签)并命令标签从最少使用开始。 SQL查询如下所示:
SELECT name, COUNT(name) AS TimesUsed
FROM Tags INNER JOIN Song_Tag_Junc STJ ON Tags.ID = STJ.TagID
GROUP by name
ORDER BY COUNT(name)
实体歌曲和标签看起来像这样:
public class Song {
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Tag> Tags { get; set; }
}
public class Tag {
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Song> Songs { get; set; }
}
知道如何在Linq to Entities中实现这一目标吗?
答案 0 :(得分:0)
所以我想我回答了自己的问题。
由于Tag实体引用了Song实体,我能够编写下面的代码来完成从最少使用到最常用的标签的排序:
var query = context.Tags.OrderBy(tag => tag.Songs.Count());
List<Tag> list = query.ToList();
简洁之美!