Entity framework 具有GROUP BY、LINQ语法中的HAVING和COUNT的T-SQL
我正在努力将T-SQL查询转换为LINQ语法 在T-SQL中,查询如下所示: 将失败的文件作为 选择1作为文件存在 来自[FileHistory]f f.UerId=u.UserId上的内部联接[Users]u 按f.FileName分组 当1/*Success*/然后1 ELSE 0 END=1时使用SUMCASE f.FileState 从失败的文件中选择COUNT1 如果在将上面的T-SQL转换为LINQ时遇到严重问题,无论是查询语法还是方法语法。有人能告诉我LINQ查询的正确顺序和嵌套应该是什么样子吗 查询的实际功能:Entity framework 具有GROUP BY、LINQ语法中的HAVING和COUNT的T-SQL,entity-framework,linq,tsql,linq-to-sql,Entity Framework,Linq,Tsql,Linq To Sql,我正在努力将T-SQL查询转换为LINQ语法 在T-SQL中,查询如下所示: 将失败的文件作为 选择1作为文件存在 来自[FileHistory]f f.UerId=u.UserId上的内部联接[Users]u 按f.FileName分组 当1/*Success*/然后1 ELSE 0 END=1时使用SUMCASE f.FileState 从失败的文件中选择COUNT1 如果在将上面的T-SQL转换为LINQ时遇到严重问题,无论是查询语法还是方法语法。有人能告诉我LINQ查询的正确顺序和嵌套应
我有一个文件历史记录表,其中包含单个文件的多个条目。需要知道总共有多少失败的文件。意味着文件从未成功处理过状态1,并且至少处理过一次错误状态2。单个文件按文件名分组。查询结果是一个单一的数字。下面的查询理论上应该可以工作。但它可能会失败,具体取决于实体框架的版本和提供者
var count = (from f in context.FileHistory
join u in context.User on f.UserId equals u.UserId
select f)
.GroupBy(f=> f.FileName)
.Where(g=>
g.Count(i=> i.FileState == 1) <=0 &&
g.Count(i=> i.FileState == 2) >=1 ).Count();
下面的查询在理论上应该是可行的。但它可能会失败,具体取决于实体框架的版本和提供者
var count = (from f in context.FileHistory
join u in context.User on f.UserId equals u.UserId
select f)
.GroupBy(f=> f.FileName)
.Where(g=>
g.Count(i=> i.FileState == 1) <=0 &&
g.Count(i=> i.FileState == 2) >=1 ).Count();
哦,这看起来比我所有失败的尝试要容易得多。然而,它永远不会成功。这个查询非常有效。由于编译器的警告,我可以用任意值替换计数。谢谢!哦,这看起来比我所有失败的尝试要容易得多。然而,它永远不会成功。这个查询非常有效。由于编译器的警告,我可以用任意值替换计数。谢谢!