0
我正在學習LINQ,並試圖弄清楚如何讓所有成員的最後一個訂單失敗(每個成員可以有很多訂單)。出於效率的原因,如果可能的話,我希望在將它放入列表之前在LINQ中完成。LINQ:獲取最後訂單的所有成員失敗
到目前爲止,我認爲這是讓最近加入失敗訂單的所有成員(cutoffDate是當前日期-10天)的正確方法。
var failedOrders =
from m in context.Members
from o in context.Orders
where m.DateJoined > cutoffDate
where o.Status == Failed
select m;
我希望我需要使用最後或LastOrDefault,或者可能我需要使用
orderby o.OrderNumber descending
,然後拿到第一或FirstOrDefault在this計算器答案建議。
請注意,我只想查看給定成員的最後訂單,看看是否失敗(不只是查找最後失敗的訂單)。
是有關係,每個訂單都有一個成員的引用,每一個成員都有名單所有的訂單(抱歉,但我的數據庫術語有點生疏)。 – Tarostar
從我最初的測試來看,這似乎工作得非常好,並且讓我走上了探索SELECT INTO的道路,因爲這看起來非常有用。任何重大的性能或資源使用懲罰我應該注意以這種方式創建一個臨時變量? – Tarostar
@Tarostar你沒有創建一個臨時變量。您可以通過查看'failedOrders'變量來查看Visual Studio中生成的查詢。它將是一個嵌套查詢(SELECT的SELECT)。如果你不需要最後的命令(所以你做一個'select mlo.Member'),可以刪除'select new ... into'並直接移動'm.Orders ... FirstOrDefault()'在哪裏。性能可能相同。 – xanatos