将两个计数查询合并为一个布尔查询

时间:2009-04-27 11:42:53

标签: c# linq linq-to-sql

我想不出把它写成单个查询的好方法。

int count1 = query1.Count();
int count2 = query2.Count();

return count1 > count2;

请注意,我对编写单个查询的方式感兴趣,该查询返回布尔值并在服务器上进行一次评估。

请注意,我对使用LINQ而不是SQL编写此内容感兴趣。

2 个答案:

答案 0 :(得分:4)

尝试

return query1.Count() > query2.Count();

尝试在同一服务器调用中运行两个不相关的查询是不值得的,但这里是:

SELECT CASE WHEN (SELECT COUNT(*) FROM Products) 
        > (SELECT COUNT(*) FROM Orders) 
            THEN CAST(1 as bit) 
            ELSE CAST(0 AS BIT)

但是,我严重怀疑你可以让LINQ创建这种查询。您必须改为调用存储过程。

答案 1 :(得分:0)

有什么问题
var result= query1.Count() > query2.Count();

return result; // result is of type bool

编辑:

如果您真的想在服务器上执行一个查询,可以使用DataContext.ExecuteQuery来执行动态查询。