0

Linq to Entities - 多对多问题:

我有一个 Songs 表和一个 Tags 表,中间有一个多对多表。我想计算每个标签的歌曲数量(一个计数),并从最少使用的标签开始排序。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 Entity 中实现这一点吗?

4

1 回答 1

0

所以我想我回答了我自己的问题。

由于 Tag 实体引用 Song 实体,我可以编写下面的代码来完成从最少使用到最多使用的标签排序:

var query = context.Tags.OrderBy(tag => tag.Songs.Count());

List<Tag> list = query.ToList();

简单中有美!

于 2013-08-08T18:50:55.597 回答