使用带有过滤器的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;
不幸的是,这会破坏我的引号。我甚至不确定,如果这将与撇号现在工作…
如何定义过滤器,使主题既可以使用引号又可以使用撇号?
经过几天的努力解决这个问题:
这是最终的解决方案,这对我来说很好:
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中添加或查找约会时,请确保没有任何非中断空格。在添加或过滤项时删除它们。这是我对有类似问题的人的一点建议