我正在使用Linqer将以下SQL转换为LINQ
SELECT CC.col1,CC.col2,CC.col3 FROM dbo.Table1 CC
WHERE CC.Status IN (0,3) AND CC.col4 IN (2,3,4,5)
GROUP BY CC.col1,CC.col2,CC.col3
HAVING COUNT(DISTINCT CC.Status) = 2但它显示了以下错误
SQL不能转换为LINQ:在Agregate计数中的DISTINCT不能转换为LINQ
发布于 2017-03-08 06:36:26
按照以下方式更改sql选择:
SELECT CC.col1,CC.col2,CC.col3 FROM dbo.Table1 CC
WHERE CC.Status IN (0,3) AND CC.col4 IN (2,3,4,5)
GROUP BY CC.col1,CC.col2,CC.col3
HAVING (select COUNT(DISTINCT CC.Status) FROM dbo.Table1 CC) = 2Linqer中的输出如下所示:
from CC in db.Table1
where
(new int[] {0, 3 }).Contains(CC.Status) &&
(new int[] {2, 3, 4, 5 }).Contains(CC.col4)
group CC by new {
CC.col1,
CC.col2,
CC.col3
} into g
where
((from Table1 in db.Table1
select new {
g.Key.Status
}).Distinct()).Count(p => g.Key.Status != null) == 2
select new {
g.Key.col1,
g.Key.col2,
g.Key.col3
}发布于 2017-03-08 06:01:31
在最后一个子句COUNT(DISTINCT CC.Status)中,此部分的转换失败。如果您删除了DISTINCT,它可能能够转换该SQL。在您看到它执行Status.Count()的部分中,将其更改为Status.Distinct().Count(),您应该会做得很好。
https://stackoverflow.com/questions/42663641
复制相似问题