如何使用left join,aggregate和where子句创建Linq to Sql

时间:2012-06-10 05:03:38

标签: c# database entity-framework linq-to-sql

有谁知道如何将此查询转换为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上。任何帮助将不胜感激!

由于

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

只是一个建议,你总是可以使用这个伟大的工具

http://www.sqltolinq.com/

帮助转换