0
鑑於這種代碼:在需要說== NOT NULL的三元組中返回「NOT NULL」?
dataSource = this.db.DailyProductionReportSummaries.Where(
x => x.ShiftDate >= start && x.ShiftDate <= end &&
x.Shift == (shift != null ? shift.Code : "SOMETHING ELSE") && //TODO: "SOMETHING ELSE" where it's not null
x.LineNumber == (shift != null ? lineNumber : 0) && //TODO: 0 where it's not null
x.ProductCode == (productNumber != 0 ? productNumber.ToString() : "SOMETHING ELSE") //TODO: "SOMETHING ELSE" where it's not null
).ToList();
我需要在每個標有「TODO」類似(針對專門與//TODO
第一線的ternaries地說:
如果
shift
有東西在裏面,返回shift.Code否則,返回將評估爲x.Shift == NOT NULL
(或更清楚地,它評估爲x.shift != null
)的「東西」
我在這裏只是抱着一個願望,還是我需要繼續前進,並將其擴大爲一堆if
陳述? (我試圖凝聚多個if語句爲沒有大量的邏輯改變或重寫的東西更緊湊,以適應不斷變化的配置...
哇靠!我就知道你連鎖,但不喜歡那是絕對不可思議的!Imma試試這個,讓你知道它是如何工作的! – MetalPhoenix 2015-02-05 16:04:40
@MetalPhoenix請記住,IQueryable的表示「做一個查詢」,而不是這樣的結果。假設[語義上]等價的最終操作/樹如何創建IQueryable基本上是不相關的(EF可以使用可查詢的所有限制等)。查看應用查詢的實際SQL(即在ToList中)以查看最終發生的事情。 – user2864740 2015-02-05 16:08:26
是的,如果我們總是假定它有一個值(它會),這似乎更多地是我需要的一個輕微的邏輯修改...更容易處理productNumber。這是比我想要完成的更好的解決方案!很容易忘記,這不是實際的結果或行動,而是「做」,因爲它由EF分隔。感謝您的提醒。 – MetalPhoenix 2015-02-05 16:12:28