results = results.Where(x => x.SomeValue ?? 0 == 0);
我想檢查一個值是否爲null,如果爲null,則使其爲零,然後進行比較。??在LINQ中的運算符
我不知道如何把額外的括號()
錯誤消息:
results = results.Where(x => x.SomeValue ?? 0 == 0);
我想檢查一個值是否爲null,如果爲null,則使其爲零,然後進行比較。??在LINQ中的運算符
我不知道如何把額外的括號()
錯誤消息:
results = results.Where(x => (x.SomeValue ?? 0) == 0);
但我發現更可讀的明確檢查空,如果你處理可空類型:
results = results.Where(x => !x.SomeValue.HasValue || x.SomeValue == 0);
另一種選擇是GetValueOrDefault()
方法,它將返回零[R整數(長字節):
results = results.Where(x => x.SomeValue.GetValueOrDefault() == 0);
嘗試......
results = results.Where(x => (x.SomeValue ?? 0) == 0);
假設x.SomeValue
是一個可空INT,你可以這樣做:
results = results.Where(x => (x.SomeValue ?? 0) == 0);
但你只能用相同類型的值「替換」空值,所以如果它是一個字符串或別的東西,這是行不通的。
你可以用內聯,如果運營商以及這樣做:
results = results.Where(x => x.SomeValue == null ? true : x.SomeValue == 0)
儘管當然,正如Sergey所說,可讀性是關鍵。這些都不像明確的比較那樣可讀。 –
你需要一個可空int類型爲這個(INT?)。
results = results.Where(x => (x.SomeValue ?? 0) == 0);
謝謝我不知道把括號放在哪裏:D –
只需放入比您需要的更多圓括號,並將它們刪除直到停止工作。簡單到足以測試。 – Servy
如果null-coalescing導致你這麼多問題,爲什麼不檢查null? '(x => x == null || x == 0)'?我認爲意圖更清楚。 –