我有一个看起来像这样的表:
| 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();