我需要将此SQL查询转换为LINQ:
SELECT COUNT(result1.Id) AS total,
result1.OccurrenceDate,
result1.Path,
result1.Message,
result1.StackTrace
FROM (SELECT * FROM tbllog ORDER BY OccurrenceDate DESC) AS result1
GROUP BY result1.Path, result1.Message ORDER BY total DESC
但我没有成功。我尝试过很多方面,没有任何作用。 一些帮助?
答案 0 :(得分:0)
根据以下内容创建linq查询:
SELECT * FROM tbllog ORDER BY OccurrenceDate DESC AS result1
GROUP BY result1.Path, result1.Message ORDER BY total DESC
完成后,写一些linq来获取你的计数。
答案 1 :(得分:0)
var results = _dbContext.tbllog
.GroupBy( t => new { t.Path, t.Message })
.Select( g => new
{
Total = g.Count(),
Path = g.Key.Path,
Message = g.Key.Message
}).OrderBy(p => p.Total);
值得一提的是,您的sql查询无效,因为属性OccurrenceDate
和StackTrace
不在GROUP BY
子句中,也不在聚合函数中,因此它是无效查询。与LINQ查询相同。您应该确定要对它们执行的操作。要么将它们包含在组中,要么使用聚合函数为每个组选择适当的值。
答案 2 :(得分:0)
我不知道你的问题的上下文是什么,但是如果你不需要修改查询以便使用其他参数执行,我强烈建议将查询作为SQL执行。我所知道的所有ORM(实体框架,NHiberate,LINQ to SQL等)都支持此功能。
埃里克