将 Microsoft.Office.Interop.Outlook.Items.Find 与过滤器一起使用,可以包含引号和撇号
Use Microsoft.Office.Interop.Outlook.Items.Find with filter, that could contain quotation marks and apostrophes
我在使用以下过滤器时遇到问题。
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;
我希望能够查找项目,即使我的主题包含两个引号 and/or 撇号。我试过:
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;
这会很好用。你必须使用单引号两次。
不间断空格还有另一个小问题。当您添加 ror 尝试在 outlook 中查找约会时,请确保没有任何不间断的空格。在添加或过滤项目时删除它们。只是我对有类似问题的人的小建议。
我在使用以下过滤器时遇到问题。
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;
我希望能够查找项目,即使我的主题包含两个引号 and/or 撇号。我试过:
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;
这会很好用。你必须使用单引号两次。
不间断空格还有另一个小问题。当您添加 ror 尝试在 outlook 中查找约会时,请确保没有任何不间断的空格。在添加或过滤项目时删除它们。只是我对有类似问题的人的小建议。