我想SELECT
来自特定表的所有数据,方法是在结果中添加countField
,计算所有结果中相应Item.ResourceId
存在的次数。
SELECT Name, ResourceId, (SELECT COUNT(ResourceId) FROM Item GROUP BY ResourceId) AS foo
FROM Item
关于如何做到这一点的任何想法?
答案 0 :(得分:2)
如果这是您想要的查询
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
答案 1 :(得分:0)
这有用吗?
SELECT resourceId,count(resourceId)FROM Item GROUP BY resourceId
答案 2 :(得分:0)
SELECT Name,ResourceId,ResourceIdCount 来自项目i 内部联接 ( SELECT ResourceId,COUNT(ResourceId)AS ResourceIdCount FROM Item GROUP BY ResourceId ) 我知道了 ON i.ResourceId = ic.ResourceId