對于給定的資料集,我想為每個OrderId具有最小數字的唯一行回傳Status,因此結果將是:

我有一個作業查詢可以做到這一點:
var result = _dbContext.Orders
.GroupBy(s => s.OrderId)
.Select(group => group.OrderBy(x => x.Status).First()).ToList();
但是,我想修改這個查詢,只為每個表行回傳三個選定的欄位,而不是現有的幾十個欄位。我知道我需要添加如下內容:
.Select(group => new
{
OrderId = ???,
Status = ???,
Date = ???
}
但我無法將它添加到我現有的查詢中并讓它仍然有效。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
你可以嘗試做這樣的事情:
var result = _dbContext.Orders
.GroupBy(s => s.OrderId)
.Select(group => group.OrderBy(x => x.Status).First())
.Select(order => new
{
OrderId = order.OrderId,
Status = order.Status,
Date = order.Date
})
.ToList();
uj5u.com熱心網友回復:
在 SQL 中,您將使用:
SELECT OrderID,MIN(Status) as Status
FROM Orders
GROUP BY OrderID
LINQ 查詢類似:
var query = context.Orders
.GroupBy(o=>o.OrderId)
.Select(g=> new {
OrderId=g.Key.OrderId,
Status=g.Min(o=>o.Status)
});
var results=query.ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/498015.html
