1

我有一个看起来像这样的表:

| FruitID | BasketID | FruitKind | HarvestTime |
|   23    |    2     |    6      |  1/13/2013  |
|   24    |    2     |    3      |  1/19/2013  |
|   25    |    5     |    4      |  1/21/2013  |
|   26    |    5     |    3      |  1/31/2013  |
|   27    |    5     |    6      |  2/3/2013   |

我想查询某个列表中的所有水果,BasketID将结果分组BasketID,并在每个组中,查看最后一个HarvestTime并返回所有BasketIDs包含FruitKind3 或 4 水果的列表(FruitKind 可以有值1 到 8 之间)。例如,如果我们传入BasketID2 和 5,2BasketID会返回,因为它最新FruitID的 24 的 aFruitKind为 3,但BasketID5 的FruitID27 的类型为 6。

这就是我卡住的地方:

var TheQuery = (from a in MyDC.TableFruits
                where TheListOfBasketIDs.Contains(a.BasketID)
                group a by a.BasketID into g

                where .... "latest FruitID has FruitKind == to 3 || 4"

                select g.Key).ToList();

我需要在每个组中订购 HarvestTime,以便我可以测试最新水果的 FruitKind。感谢您的建议。

4

1 回答 1

4

如果我理解正确,那么

var TheQuery = (from a in MyDC.TableFruits
                where TheListOfBasketIDs.Contains(a.BasketID)
                group a by a.BasketID into g
                let lastFruitKind = g.OrderByDescending(x => x.HarvestTime)
                                     .First().FruitKind
                where lastFruitKind == 3 ||
                      lastFruitKind == 4 
                select g.Key).ToList();
于 2013-02-05T10:38:52.407 回答