Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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#实体框架-如何返回具有最大值的列表?_C#_Entity Framework - Fatal编程技术网

C#实体框架-如何返回具有最大值的列表?

C#实体框架-如何返回具有最大值的列表?,c#,entity-framework,C#,Entity Framework,首先,我使用实体框架对数据库进行建模,其结构如下: Pedidos : -------- IDPedidoDetalhe (int, not null) IDPedido (int, not null) Aditamento (int, not null) Semana (int, null) Ano (int, null) Titulo (nvarchar(250), null) 我正在尝试创建一个查询,该查询将查找表中具有“IDPedido”必需值和“Aditamento”的最大值

首先,我使用实体框架对数据库进行建模,其结构如下:

Pedidos :
--------
IDPedidoDetalhe (int, not null)
IDPedido  (int, not null)
Aditamento (int, not null)
Semana  (int, null)
Ano  (int, null)
Titulo  (nvarchar(250), null)
我正在尝试创建一个查询,该查询将查找表中具有“IDPedido”必需值和“Aditamento”的最大值的行。要查找所需项目(npedido)的最大值,我使用:

lista=db.Pedidos.Where(m=>m.IDPedido==npedido.ToList();
var pedido=lista.Select(m=>m.Aditamento).Max(x=>x);
但是我想要列表中的行(所有列),而不仅仅是“Aditamento”的值


您能帮我完成这个查询吗?

当您使用
选择(m=>m.Aditamento)
向Aditamento进行投影时,您失去了Pedido实体的所有字段。要按id获取单个Pedido,使用最大Aditamento值,您只需按Aditamento订购过滤过的Pedido并选择第一个:

var pedido = db.Pedidos.Where(p => p.IDPedido == npedido)
               .OrderByDescending(p => p.Aditamento)
               .FirstOrDefault();
要获取具有最大Aditamento值的所有PEDIDO,您需要按Aditamento对过滤后的PEDIDO进行分组,然后选择具有最大键值的组:

var pedidos = db.Pedidos.Where(p => p.IDPedido == npedido)
                .GroupBy(p => p.Aditamento)
                .OrderByDescending(g => g.Key)
                .FirstOrDefault();
如果您想要列表,请检查是否已按id找到任何pedidos,并将组转换为列表:

if (pedidos != null)
{
    List<Pedido> result = pedidos.ToList();
}
if(pedidos!=null)
{
列表结果=pedidos.ToList();
}
这应该可以:

List<Pedidos> lista = db.Pedidos.Where(m => m.IDPedido == npedido).ToList();

var maxValue= lista.Max(x => x.Aditamento);

// IEnumerable with all lines that have the "maxValue"
var lineWithMaxValue = lista.Where(x => x.Aditamento == maxValue); 
lista=db.Pedidos.Where(m=>m.IDPedido==npedido.ToList();
var maxValue=lista.Max(x=>x.Aditamento);
//IEnumerable,包含所有具有“maxValue”的行
var lineWithMaxValue=lista.Where(x=>x.Aditamento==maxValue);

应该是列表还是单个实体?
List<Pedidos> lista = db.Pedidos.Where(m => m.IDPedido == npedido).ToList();

var maxValue= lista.Max(x => x.Aditamento);

// IEnumerable with all lines that have the "maxValue"
var lineWithMaxValue = lista.Where(x => x.Aditamento == maxValue);