我正在維護一個項目,並遇到一些我無法理解的代碼。 LINQ查詢:不理解LINQ查詢
var toDraw = from tile in testArr.AsEnumerable()
where tile.Item_Business_Unit != null ?
((tile.Ending_Date >= DateTime.Now || tile.Ending_Date == DateTime.MinValue) &&
((tile.Sales_Code == null) || (tile.Sales_Code.ToString() == customerNumber) ||
(tile.Sales_Code.ToString() == cpg)) && (tile.Unit_Price != 0)) :
((tile.Ending_Date >= DateTime.Now || tile.Ending_Date == DateTime.MinValue) &&
((tile.Sales_Code == null) || (tile.Sales_Code.ToString() == customerNumber) ||
(tile.Sales_Code.ToString() == cpg)) && (tile.Unit_Price != 0))
select tile;
從我明白,從數組中被選擇的瓦片,其具有以下條件:
- 結束日期可以是
datetime.now
或datetime.minvalue
- 銷售代碼可以爲空或者可以等於客戶沒有或CPG
- 單價應大於0
但我不明白爲什麼在tile.Item_Business_Unit
之後有條件表達式,因爲這兩個條件執行相同的操作。那麼即使它的業務單位爲空,該項目也會被選中嗎?這個工作與普通的if/else操作不同嗎?
任何建議將不勝感激。
看起來像一個遺蹟。在某個時候,在查詢中使用了'tile.Item_Business_Unit',但現在已經不存在了 - 這個三元組保留了下來,因爲做這個變更的那個人並沒有打擾它。 – Luaan
@Luaan謝謝。所以這意味着兩者執行相同的事情。只是想要確認,因爲這是一個對企業至關重要的項目,我不能惹惱它。謝謝。 – Akhoy
好吧,如果你想絕對肯定的話,看一看'Item_Business_Unit'的代碼 - 它可能有一個副作用,你可能會刪除。這將是相當鬼鬼祟祟的(而且是你爲另一個人殺P的罪行),但這是可能的。如果它沒有副作用,可以安全地將其移除。 – Luaan