Linq相当于Sql查询

Linq相当于Sql查询,linq,sql-to-linq-conversion,Linq,Sql To Linq Conversion,SQL查询- select q.QuesId, q.Title, q.Description, count(a.QuesId) as Answers from Question q join Answer a on q.QuesId = a.QuesId group by q.QuesId, q.Title, q.Description 我想将此Sql查询转换为linq 我的做法是: var questions = (from q in db.Questions

SQL查询-

select q.QuesId, q.Title, q.Description, count(a.QuesId) as Answers
from Question q
join Answer a on q.QuesId = a.QuesId
group by q.QuesId, q.Title, q.Description
我想将此Sql查询转换为linq

我的做法是:

var questions = (from q in db.Questions
                 join a in db.Answers on q.QuesId equals a.QuesId
                 group q by new 
                 { q.QuesId, q.Title, q.Description, q.AskedBy, q.AskedOn, q.ModifiedOn }
                 into x
                 select new 
                 { x.Key.QuesId, x.Key.Title, x.Key.Description, x.Key.AskedBy, x.Key.AskedOn, x.Key.ModifiedOn, x.key.Answers.count }
                 ).ToList();

它似乎不起作用。

这是我最后做的对我来说很有效的事情-

var questions = db.Questions
                .GroupJoin(db.Answers, q => q.QuesId, a => a.QuesId, (q, a) => q)
                .GroupBy(q => new { q.QuesId })
                .SelectMany(x => x.Select(q => new 
                { q.QuesId, q.Title, q.Description, q.UserDetail.FirstName, q.UserDetail.LastName, q.AskedOn, q.ModifiedOn, q.Answers.Count }
                )).Distinct();

可能有帮助。@CoderofCode谢谢,它起作用了。检查流畅的语法版本如果有帮助,将提供相同的结果如果您想要左连接而不是内部连接,那么为不匹配的记录创建默认值很重要,这是非常可行的,在您的情况下,您只使用左连接的一部分,所以可以跳过,但这是很常见的错误。除此之外,分组一个键不需要新的括号或花括号,最后在多个键上分组比使用SelectManyal进行展平更好。因此请注意,在匿名类型上使用Distinct不是一个好主意,您应该能够创建一个类,并在实现IEquatable时重写Equals、GetHashCode