2011-03-20 89 views
0

里面解释任何人都可以帮忙。LINQ查找集合中的最新项目,其中有一个集合!

我有一个产品集合,每个产品都有一个仓库集合,然后在仓库集合里面有一个仓库集合。

我需要返回所有我做得很好的产品,但我需要返回locationWithStock,这是仓库集合内部位置集合的成员。

我迷路了!

我有这个到目前为止但它错了..因为StockDate不是仓库的成员,而是它的集合。我只需要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

产品
每个产品。仓库多个仓库
每个仓库。地点在每个仓库中的多个地点。

我认为无论返回对此我做精(你的问题)转化为对prodduct状态的一些条件的所有产品,因此我代表的是条件与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) }; 
+0

对不起,也许我没有解释正确..做得很好...意味着我目前正在返回没有问题的所有产品....与代码无关... – Martin 2011-03-20 08:48:02

+0

是的你是正确的 \t 产品 每个product.Warehouses多个仓库 每个Warehouse.Locations在每个仓库的多个位置。 – Martin 2011-03-20 08:48:30

+0

locationWithStock需要包含来自位置的最新日期,但要记住每个产品包含多个仓库,每个仓库包含多个位置。日期是该位置的成员。 – Martin 2011-03-20 08:49:47

相关问题