一段時間以來第一次使用 LINQ 并嘗試清理一些東西。我有以下宣告:
var element = await _Entities.References
.Where(db => db.LoadId == request.LoadId && db.ReferenceCode == "123")
.OrderByDescending(rec => rec.Created).FirstOrDefaultAsync(cancellationToken);
if (element != null) {
dto.ElementValue = element.Value;
}
如果可能,我想將其壓縮為單個陳述句,但我無法僅從 await 方法中獲取值。
uj5u.com熱心網友回復:
你可以這樣做:
dto.ElementValue = (await _Entity.References
.Where(db => db.LoadId == request.LoadId && db.ReferenceCode == "123")
.OrderByDescending(rec => rec.Created)
.FirstOrDefaultAsync(cancellationToken))?.Value
?? dto.ElementValue;
請注意,從技術上講,這會更改代碼的行為。以前,如果查詢未回傳結果,ElementValue則不會觸及該屬性。對于單行,如果查詢沒有回傳結果,ElementValuegetter 和 setter 都會被呼叫。
此外,如果查詢回傳的結果Value是null,則該ElementValue屬性將設定為自身而不是null。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/372571.html
