LINQ найти последний элемент в коллекции, которая имеет коллекцию Inturn!Объяснил внутри - PullRequest
0 голосов
/ 20 марта 2011

может кто-нибудь помочь.

У меня есть коллекция продуктов, у каждого продукта есть коллекция складов, а затем внутри коллекции складов есть коллекция мест.

Мне нужновернуть все товары, с которыми у меня все в порядке, но мне нужно вернуть locationWithStock, который является членом коллекции мест внутри коллекции складов.

Я потерян!

У меня такдалеко НО это неправильно .. потому что StockDate не является членом Warehouse, но его коллекции. Мне нужны только самые последние (самые последние даты) StockDateS .. следовательно, мне нужно искать внутри каждой StockDate, которая там1 в каждом члене местоположения и возвращает только самое последнее.

        var items = from j in products
              let locationWithStock =
                            j.Warehouses.OrderByDescending
                         (a => a.StockDate).FirstOrDefault()
                        select new 
                        {
                            Name = j.Name,
                            Warehouse = locationWithStock.Name
                        }

Надеюсь, я все объяснил хорошо?

Любая помощь действительно ценится

Спасибо

РЕДАКТИРОВАТЬ

Это довольно сложно объяснить :-) Но я постараюсь объяснить немного больше.

Вот иерархия

Продукты

Каждый продукт имеет несколько складов

Каждый склад имеет несколько местоположений.

Мне нужно вернуть все продукты, и каждый продукт должен содержать название местоположения.

Чтоэто критерии для определения местоположения, когда есть несколько складов и несколько местоположений.

Я должен искать на каждом складе и, в свою очередь, в каждом местоположении ... и возвращать ВНЕ ВСЕХ ИХ последнее местоположение (ТОЛЬКО 1)который я обнаружил, используя StockDate

1 Ответ

1 голос
/ 20 марта 2011

Продукты
каждый товар. Склады несколько складов
каждый Warehouse.Locations несколько мест в каждом Warehouse.

Я предположил, что возвращает все продукты, которые я делаю нормально (в вашем вопросе) переводит в какое-то условие в состоянии продукта, поэтому я представил это условие с помощью where p.Doing == "Fine" where в приведенном ниже коде, который вы могли бы изменить соответствующим образом.

var stocks =
           from p in products
           from w in p.Warehouses
           from l in w.locations
           group l by l.Date into g
           let maxDate = g.Max(l1 => l1.Date)
           select new { Product=p.Name, Location= g.Where(l2 => l2.Date == maxDate) };
...