我有一個頁面,您可以在其中搜索人員。他們可以獲取所有人的列表,或者按照某些標準(如姓或名)對其進行過濾。使用可選搜索子句執行LINQ查詢
到目前爲止,我一直在嘗試使用this question中詳述的技術。
所以我的代碼看起來像
string firstname=...
string lastname=...
var people=from p in People.All()
where (firstname==null || firstname.ToLower()==p.FirstName.ToLower()) &&
(lastname==null || lastname.ToLower()==p.LastName.ToLower())
select p;
然而,我建立查詢時,當這兩個名字和姓氏爲null得到一個空引用錯誤。刪除where子句可以消除錯誤。
爲什麼這不起作用? C#是否嘗試評估where子句每個部分的第二部分?它不應該是因爲短路或正確嗎?
只有一個很高的rep用戶(79k)在這裏發佈了答案。那個答案是正確的。你爲什麼要刪除它? – Earlz 2010-07-16 17:56:53
'你'在這種情況下是用戶,誰顯然刪除了自己的答案。 IIRC,它討論了使用string.IsNullOrEmpty(firstname)和string.Equals()。我認爲他刪除了,因爲他的回答沒有解決你的實際問題,即使它的工作 – 2010-07-16 17:59:45