2012-06-10 38 views
1

有谁知道如何将此查询转换为LINQ to SQL?如何使用左连接,聚合和where子句创建Linq to Sql

SELECT posts.*, count(COMMENTS.*) AS comment_count FROM POSTS 
LEFT JOIN COMMENTS on POSTS.id = COMMENTS.post_id 
WHERE comments.date IS NULL OR comments.date >= [NOW] 
GROUP BY posts.id 
ORDER BY comment_count DESC 

它在SQL中很简单,但是我在将linq转换为sql时遇到了困难。任何帮助,将不胜感激!

感谢

回答

5

你想是这样的:

var query = 
    from p in POSTS 
    join c in COMMENTS on p.id equals c.post_id into cs 
    group new 
    { 
     Post = p, 
     Comments = cs 
      .Where(c1 => c1.date >= DateTime.Now) 
      .Count(), 
    } by p.id; 
+0

你能解释一下这个查询吗?我不明白这是怎么做的一个左连接=/ – gogogom3

+0

@ gogogom3关键部分是'进入cs'。如果没有这个查询,查询将会是一个完整的连接,但是通过'into',它会生成一系列值 - 'cs'变量 - 这些变量都是与每个文章关联的相关注释(零个或多个)。这有帮助吗? – Enigmativity