C# SQL到LINQ转换错误:无法将不同的Agregate计数转换为LINQ
我有一个SQL查询,我正在尝试将其转换为LINQ。但当我这样做时,我得到了这个错误: SQL无法转换为LINQ:DISTINCT无法将Agregate计数转换为LINQ 那么,如何将C# SQL到LINQ转换错误:无法将不同的Agregate计数转换为LINQ,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我有一个SQL查询,我正在尝试将其转换为LINQ。但当我这样做时,我得到了这个错误: SQL无法转换为LINQ:DISTINCT无法将Agregate计数转换为LINQ 那么,如何将count(distinct LOC\u code)转换为LINQ?有什么办法吗 这是我的LINQ查询,不添加计数(不同的LOC\U代码): 我认为totloc=g.Select(p=>p.LOC_code).Distinct().Count()将起作用。但是我怀疑它是否会被翻译回同一个SQL。是的,刚刚意识到,修复
count(distinct LOC\u code)
转换为LINQ?有什么办法吗
这是我的LINQ查询,不添加计数(不同的LOC\U代码)
:
我认为
totloc=g.Select(p=>p.LOC_code).Distinct().Count()代码>将起作用。但是我怀疑它是否会被翻译回同一个SQL。是的,刚刚意识到,修复了它。WHERE子句有什么原因吗?它在SQL和LINQ中似乎没有任何作用。@AndyNichols如果我不得不猜测SQL是由动态添加子句的内容生成的,而1=1
只是没有添加子句时的默认子句。顺便问一下,到底是什么给了你这个错误?我假设它是某种类型的SQL到Linq转换器代码>将起作用。但是我怀疑它是否会被翻译回同一个SQL。是的,刚刚意识到,修复了它。WHERE子句有什么原因吗?它在SQL和LINQ中似乎没有任何作用。@AndyNichols如果我不得不猜测SQL是由动态添加子句的内容生成的,而1=1
只是没有添加子句时的默认子句。顺便问一下,到底是什么给了你这个错误?我假设它是某种类型的SQL到Linq转换器。
SELECT
ST_CN_NO,
DN_DT,
count(ST_CN_NO) as totlines,
count(distinct LOC_CODE) as totloc,
sum(SN_QTY)as totscnqty,
sum(SAP_QTY) as totmpqty
from physical_count
where 1=1
group by ST_CN_NO,DN_DT
order by physical_count.ST_CN_NO
from t in db.PHYSICAL_COUNT
where
1 == 1
group t by new {
t.ST_CN_NO,
t.DN_DT
} into g
orderby
g.Key.ST_CN_NO
select new {
ST_CN_NO = (Int32?)g.Key.ST_CN_NO,
g.Key.DN_DT,
totlines = (Int64?)g.Count(),
totscnqty = (Int32?)g.Sum(p => p.SN_QTY),
totmpqty = (Int32?)g.Sum(p => p.SAP_QTY)
}