Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq get max()分组_C#_Linq - Fatal编程技术网

C# Linq get max()分组

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

我有一个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
    )
如何使用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不推荐使用该语法


它工作得很好,是否可以用隐式语法来表达这个查询?这就是为什么我需要一些其他的动态过滤器。