我想SELECT
通过将 a 添加到结果中来计算特定表中的所有数据,countField
该结果计算相应值Item.ResourceId
在所有结果中存在的次数。
SELECT Name, ResourceId, (SELECT COUNT(ResourceId) FROM Item GROUP BY ResourceId) AS foo
FROM Item
关于如何做到这一点的任何想法?
如果这是您想要的查询
SELECT Name, ResourceId, COUNT(*) FROM Item GROUP BY Name, ResourceId;
它按如下方式转换为 LINQ。
var result = items.GroupBy(item => new { item.Name, item.ResourceId })
.Select(group => new { group.Key.Name, group.Key.ResourceId, Count = group.Count() })
.ToList();
或者你想要这个查询?
SELECT Name,
ResourceId,
(SELECT COUNT(*) FROM Item y WHERE y.ResourceId = x.ResourceId)
FROM
Item x;
这将转换为以下 LINQ 表达式。
var result = items.Select(item => new
{
item.Name,
item.ResourceId,
Count = items.Count(x => x.ResourceId == item.ResourceId)
}).ToList();
给定以下输入
Name ResourceId
-----------------
A 1
A 1
B 1
B 2
B 2
C 3
第一个查询产生
Name ResourceId Count
-------------------------
A 1 2
B 1 1
B 2 2
C 3 1
而第二个查询产生了这个。
Name ResourceId Count
-------------------------
A 1 3
A 1 3
B 1 3
B 2 2
B 2 2
C 3 1
这行得通吗?
SELECT resourceId, count(resourceId) FROM Item GROUP BY resourceId
SELECT Name, ResourceId, ResourceIdCount FROM Item i INNER JOIN (SELECT ResourceId, COUNT(ResourceId) AS ResourceIdCount FROM Item GROUP BY ResourceId) ic ON i.ResourceId = ic.ResourceId