Linq возвращает несколько значений в группе, нужно только последнее изменение - PullRequest
1 голос
/ 11 января 2012

У меня есть следующий linq, я хочу, чтобы последний продукт был изменен в день, например, в начале дня у меня 2000 продуктов (CajasDia), но в полдень у меня есть только 500 продуктов (CajasDia) этот linq дает мне полный список модификаций продуктов в день, я хочу только последнюю запись измененного продукта (только 500)

Это включает в себя 3 таблицы: Producto (продукты), ProductoSubRegion и SubRegion, a в регионе много продуктов, а в регионе много продуктов.

Это соотношение между таблицами: Producto 1 .. * ProductoSubRegion * .. 1 SubRegion

List<ProductoAgr> _productos = 
        (from p in db.ProductoSubRegion.Include("Producto")
        orderby p.Fecha descending
        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)
        group p by new
        {
            p.Producto.IDProducto,
            p.Producto.Nombre,
            p.Producto.Precio,
            p.Producto.Descripcion,
            NombreProducto = p.Producto.TipoProducto.Nombre,
            p.Fecha,
            p.CajasDia
        } into ps
        select new ProductoAgr()
        {
            IDProducto = ps.Key.IDProducto,
            Nombre = ps.Key.Nombre,
            Precio = ps.Key.Precio,
            Descripcion = ps.Key.Descripcion,
            NombreProducto = ps.Key.NombreProducto,
            CajasDia = ps.Key.CajasDia,
            Fecha = ps.Key.Fecha
        }).ToList();
return View(_productos);

Это то, что я получаю, я должен получить только одну запись, значение 1496 для продукта1

My error

1 Ответ

0 голосов
/ 23 января 2012

Я разделил linq на два linqs, он работает, но было бы хорошо иметь только один, так как это могло бы улучшить производительность ...

Для тех, у кого есть похожая проблема, краткое объяснение: первый linq получает все продукты дня, принадлежащие заказу Region, на Fecha (что является значением даты); вторая linq группирует значения в уникальные значения, такие как идентификатор продукта, название, цена и описание.

Надеюсь, это поможет кому-то еще.

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, но я не смог найти ответ ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...