Linq在一个组中返回多个值,只需要最后修改

时间:2012-01-11 15:02:34

标签: linq linq-to-entities

我有以下linq,我想要在当天修改最后一个产品,例如当天我有2000个产品(CajasDia),但是在中午我只有500个产品({{ 1}}),这个linq给了我当天产品的完整修改清单,我只想要修改产品的最后一条记录(只有500条)

这涉及3个表格,CajasDia(产品),ProductoProductoSubRegion,有很多产品包含在某个地区,而某个地区包含很多产品。< / p>

这是表之间的关系: SubRegion 1 .. * Producto * .. 1 ProductoSubRegion

SubRegion

这就是我所得到的,我应该只获得一条记录,即product1的1496值

My error

1 个答案:

答案 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的地方,但我找不到答案......