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、各グループ内で最後を見て、3または4の果物を含むHarvestTimeすべての果物のリストを返します(FruitKindは値を持つことができます) 1から8の間)。たとえば、2と5を渡すと、最新の24には3があり、5には27があり、種類6であるため、2は元に戻ります。BasketIDsFruitKindBasketIDBasketIDFruitIDFruitKindBasketIDFruitID

これは私が立ち往生しているところです:

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

最新のFruitのFruitKindをテストできるように、各グループ内でHarvestTimeを注文する必要があります。あなたの提案をありがとう。

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 に答える