LINQ在一个集合中找到最新的项目,而这个集合又有一个集合!在里面解释

时间:2011-03-20 08:09:19

标签: c# linq linq-to-sql sql-order-by linq-to-objects

任何人都可以提供帮助。

我有一系列产品,每个产品都有一个仓库集合,然后在仓库集合内有一系列的位置。

我需要退回所有我做得很好的产品,但我需要退回locationWithStock,它是仓库集合内的地点集合的成员。

我迷路了!

到目前为止,我有这个但它错了..因为StockDate不是Warehouse的成员,而是它的集合。我只需要StockDateS的最新(最近的日期)..因此我需要查看每个StockDate里面每个memeber位置有1个并且只返回最新的。

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

我希望我解释得好吗?

任何帮助真的很感激

由于

修改

这很难解释:-)但我会尝试解释一下。

这是层次结构

产品

每个产品都有多个仓库

每个仓库都有多个位置。

我需要退回所有产品,每个产品必须包含位置名称。

当有多个仓库和多个地点时,找到该位置的标准是什么。

我必须在每个仓库中搜索,然后依次搜索每个位置......然后将所有这些内容全部返回到我使用StockDate检测到的最新位置(仅1)

1 个答案:

答案 0 :(得分:1)

<强>产品
每个产品。仓库多个仓库 每个仓库中的每个 Warehouse.Locations 多个位置。

我假设无论返回我正在做的所有产品(在你的问题中)转化为产品状态的某些条件,所以我用下面代码中的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) };