C# Linq get max()分组
我有一个SQL查询:C# Linq get max()分组,c#,linq,C#,Linq,我有一个SQL查询: declare @p_Date datetime set @p_Date = '01/01/2015' select * from inv_hist where Secuencia in ( select max(Secuencia) from inv_hist where DatFechaDocumento <= @p_Date group by Bodega,NumIdConcepto
declare @p_Date datetime
set @p_Date = '01/01/2015'
select *
from inv_hist
where Secuencia in (
select max(Secuencia)
from inv_hist
where DatFechaDocumento <= @p_Date
group by Bodega,NumIdConcepto
)
如何使用LINQ编写此查询
编辑:我整天都在跟这个打闹。我不是linq方面的专家,其他类似的问题也不能解决我的问题。试试这个:
var query = from x in invHistory
join y in
(
from z in invHistory
where z.PDate == "01/01/2015"
group z by new { z.Bodega, z.NumIDConcepto } into g
select new
{
NewSecuencia = g.Max(s => s.Secuencia)
}
)
on x.Secuencia equals y.NewSecuencia
select x;
如果您想要隐式样式,请按以下方式操作:
var query2 = from x in invHistory
from y in
(
from z in invHistory
where z.PDate == "01/01/2015"
group z by new { z.Bodega, z.NumIDConcepto } into g
select new
{
NewSecuencia = g.Max(s => s.Secuencia)
}
)
where
x.Secuencia == y.NewSecuencia
select x;
请注意,隐式样式联接语法ANSI-89不是标准,SQL Server 2005不推荐使用该语法
它工作得很好,是否可以用隐式语法来表达这个查询?这就是为什么我需要一些其他的动态过滤器。