使用带有过滤器的Microsoft.Office.Interop.Outlook.Items.Find,该过滤器可能包含

本文关键字:过滤器 Find Items Outlook 包含 Interop Office Microsoft | 更新日期: 2023-09-27 18:18:08

我使用下列过滤器时遇到问题。

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;
不幸的是,这会破坏我的引号。我甚至不确定,如果这将与撇号现在工作…

如何定义过滤器,使主题既可以使用引号又可以使用撇号?

使用带有过滤器的Microsoft.Office.Interop.Outlook.Items.Find,该过滤器可能包含

经过几天的努力解决这个问题:

这是最终的解决方案,这对我来说很好:

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;

这将正常工作。你必须使用两次单引号。

关于非换行空格还有一个小问题。当您在outlook中添加或查找约会时,请确保没有任何非中断空格。在添加或过滤项时删除它们。这是我对有类似问题的人的一点建议