我有以下linq,我想要在当天修改最后一个产品,例如当天我有2000个产品(CajasDia
),但是在中午我只有500个产品({{ 1}}),这个linq给了我当天产品的完整修改清单,我只想要修改产品的最后一条记录(只有500条)
这涉及3个表格,CajasDia
(产品),Producto
和ProductoSubRegion
,有很多产品包含在某个地区,而某个地区包含很多产品。< / p>
这是表之间的关系:
SubRegion
1 .. * Producto
* .. 1 ProductoSubRegion
SubRegion
这就是我所得到的,我应该只获得一条记录,即product1的1496值
答案 0 :(得分:0)
我将linq分成两个linqs,它的工作原理,但只有一个是好的,因为它可以改善性能......
对于有类似问题的任何人,一个简短的解释,第一个linq通过Region
得到当天所有属于Fecha
订单的产品(这是一个日期值);第二个linq将值分组为唯一值,例如产品的ID,名称,价格和描述。
希望它可以帮助别人。
List<ProductoSubRegion> _subregion = (from p in db.ProductoSubRegion.Include("Producto")
where p.SubRegion.IDSubRegion.Equals(
(from c in db.Cliente
join v in db.Vendedor
on c.IDVendedor equals v.IDVendedor
where c.IDCliente.Equals(_IDCliente)
select c.Vendedor.SubRegion.IDSubRegion).FirstOrDefault())
&& (p.Fecha >= today && p.Fecha < tomorrow)
select p).OrderByDescending(y => y.Fecha).ToList();
List<ProductoAgregar> _productos = (from t in _subregion
group t by new
{
t.Producto.IDProducto,
t.Producto.Nombre,
t.Producto.Precio,
t.Producto.Descripcion,
NombreProducto = t.Producto.TipoProducto.Nombre
} into ps
select new ProductoAgregar()
{
IDProducto = ps.Key.IDProducto,
Nombre = ps.Key.Nombre,
Precio = ps.Key.Precio,
Descripcion = ps.Key.Descripcion,
NombreProducto = ps.Key.NombreProducto,
CajasDia = ps.Select(u => u.CajasDia).FirstOrDefault(),
Fecha = ps.Select(u => u.Fecha).FirstOrDefault(),
}).ToList();
return View(_productos);
主要区别在于我使用orderby
的地方,但我找不到答案......