簡體   English   中英

linq在groupby之后對分組元素進行排序

[英]linq ordering grouped elements after groupby

我有一個看起來像這樣的表:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM