Bud*_*dda 2 .net sql linq-to-sql
我想计算拥有所有者(OwnerId!= 0)和数量没有(OwnerId == 0)的团队数量.
在纯SQL中,我只使用2个子查询使用单个查询:
select
(SELECT COUNT(*) FROM teams WHERE User=0) AS FreeTeams,
(SELECT COUNT(*) FROM teams WHERE User!=0) AS UsedTeams
Run Code Online (Sandbox Code Playgroud)
他们是更简单的方式吗?如何将其翻译成Linq2Sql?
谢谢.
var sums =
(from t in teams
group t by 0 into g
select new { freeTeams = g.Count(p => p.User == 0), usedTeams = g.Count(p => p.User != 0) }).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
这将仅发出一个查询,但它需要两次表扫描,因为L2S无法有效地转换它.
我们可以将其归结为一个表扫描:
var sums =
(from t in teams
group t by (t.User != 0) into g
select new { isUsedTeam = g.Key, Count = g.Count() }).ToList();
Run Code Online (Sandbox Code Playgroud)
这将为您提供两行,一行用于freeTeams,另一行用于usedTeams.讨厌,但LINQ2SQL可用的最快方式.
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |