Based on
SELECT T.tagName, TMP.myCount
FROM Tag T INNER JOIN
(SELECT R.tagID, COUNT(*) as myCount FROM TagRelation R
GROUP BY R.tagID
HAVING COUNT(*) > 1) AS TMP ON T.ID = TMP.tagID
Linq should look like
var tmpArray = from p in TagRelation
group p by p.tagID into g
where g.Count() > 1
select new { g.Key, myCount = g.Count() };
var resultArrary = (from d in Tag
join a in tmpArray on a.Key equals d.ID
select new { d.tagName, a.myCount }).ToArray();
If you can improve query, be my guest.
Of course you may go self-destuctive and put it into 1 statement :)