我想在linq查询中添加一个行号,我有下一个代码:
return (
from p in dbContext.pedidos
where p.Fecha == DateTime.Now
orderby p.Fecha
select new PedidosModel()
{
IdPedido = p.IdPedido,
Fecha = p.Fecha,
IdCliente = p.IdCliente,
Observaciones = p.Observaciones,
Estatus = p.Estatus
}
).ToList();
答案 0 :(得分:1)
您可以在客户端使用select的两个参数版本来添加行号:
return (
from p in dbContext.pedidos
where p.Fecha == DateTime.Now
orderby p.Fecha
).ToList()
.Select((p,r) => new PedidosModel()
{
IdPedido = p.IdPedido,
Fecha = p.Fecha,
IdCliente = p.IdCliente,
Observaciones = p.Observaciones,
Estatus = p.Estatus,
RowNumber = r
}
).ToList();
注意:如果pedidos
个对象很大,检索它们然后投影可能不如投射两次效率高:
return (
from p in dbContext.pedidos
where p.Fecha == DateTime.Now
orderby p.Fecha
select new PedidosModel()
{
IdPedido = p.IdPedido,
Fecha = p.Fecha,
IdCliente = p.IdCliente,
Observaciones = p.Observaciones,
Estatus = p.Estatus
}
).AsEnumerable()
.Select((p, r) => new { p, RowNumber = r })
.ToList();