2013-02-05 100 views
1

後我有一個表,看起來像這樣:LINQ排序分組元素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具有3 FruitKindBasketID 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(); 

我需要將各組內ordery HarvestTime,這樣我可以測試最新成果的FruitKind。感謝您的建議。

回答

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

好感謝您的幫助! – frenchie

+0

順便說一下,目前我正在使用Linq-to-SQL進行工作,但該項目稍後將遷移到Linq-to-EF。除了數據上下文之外,這個查詢是否會受到影響? – frenchie

+0

@frenchie你是說如果這可以在內存中執行? –