2015-10-16 35 views
0

我遇到以下過濾器問題。使用帶有過濾器的Microsoft.Office.Interop.Outlook.Items.Find,可能包含引號和撇號

string filter = String.Format(
    "[Start] = '{0}' AND [Subject] = '{1}' AND [BillingInformation] = 'Test'", 
    time.ToShortDateString() + " " + time.ToShortTimeString(), subject); 
return items.Find(filter) as Microsoft.Office.Interop.Outlook.AppointmentItem; 

我希望能夠查找項目,即使我的主題包含引號和/或撇號。我試過它:

string filter = string.Format(
    "[Start] = \"{0}\" AND [Subject] = \"{1}\" AND [BillingInformation] = \"Test\"", 
    string.Concat(time.ToShortDateString(), " ", time.ToShortTimeString()), 
    subject); 
return items.Find(filter) as Microsoft.Office.Interop.Outlook.AppointmentItem; 

不幸的是,這會打破我的引用標記。我甚至不確定,如果這現在可以用撇號...它似乎工作。

如何定義過濾器,所以我的主題都可以使用引號和撇號?

+0

你是什麼意思,「它似乎雖然工作」?它是否生成包含引號的正確字符串,但未正確應用過濾器?它是否產生錯誤的字符串,但執行正確的過濾? –

+0

重點是,我的半工作解決方案似乎現在適用於撇號,但不再用於引號。 – Jannik

+0

我的引號解決方案也無法正常工作。 – Jannik

回答

0

幾天試圖解決這個問題後:

這是最終的解決方案,這對我來說工作得很好:

string filter = String.Format(
    "[Start] = '{0}' AND [Subject] = '{1}' AND [BillingInformation] = 'Test'", 
    time.ToShortDateString() + " " + time.ToShortTimeString(), 
    subject.Replace("'", "''")); 
return items.Find(filter) as Microsoft.Office.Interop.Outlook.AppointmentItem; 

這將正常工作。你必須使用單引號兩次。

還有一個非破壞性空間的小問題。當您添加ror時,嘗試在Outlook中查找約會,請確保沒有任何非空格。刪除它們時,添加或過濾項目。只是我對有類似問題的人的小建議。