我有以下LINQ語句,但是我不相信其實現這一目標的最佳途徑這個數據正確的方式(但我不知道):這是返回使用LINQ
return
Buyer.Where(x =>
x.OperatingCalendar.BankHolidays.Any(y => y.OccursOn == today.Date)) ??
Buyer.Where(x =>
x.OperatingCalendar.DayOfWeek.DayID == (int)today.DayOfWeek);
這個想法是查詢Buyer.OperatingCalendar
查找表示今天是公共假期的行,以及如果它不是公共假期表示星期幾的行。一些買家沒有任何行。
關鍵是OperatingCalendar
可能會爲每個買方的兩種情況都包含一行,但是如果存在公共假期,它必須重寫星期幾。如果沒有行存在,買方將返回空值。
由於唯一的數據要求,無法使用OR。下圖應解釋情況。
既然您在任何一種情況下都要返回買方,您是否需要查看其中一個或另一個是否屬實?爲什麼BankHolidays支票首先是重要的?買方對象將包含bankholidats和dayofweek的集合。 – CharlesNRice
這裏使用'??'將不起作用,因爲'Where'永遠不會返回'null'。 – sloth
我不認爲你是表達式會做你想要的 - .Where返回一個可枚舉的列表,這將是空的,因此如果沒有項目,則不爲空。所以你呢?表達式永遠不會選擇第二個選項。您需要在每個表達式上執行.FirstOrDefault()。 –