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

| 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的列表FruitKind为3或4的水果(FruitKind的值可以介于1到8之间)。例如,如果我们传入BasketID 2和5,则BasketID 2会使其返回,因为其最新的FruitID 24的FruitKind为3,但是BasketID 5的FruitID 27为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,以便可以测试最新的Fruit的FruitKind。感谢您的建议。

最佳答案

如果我正确理解你的话

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();

08-24 23:53