【问题标题】:Equivalent of Select Where In with Outlook DASL Filter等效于使用 Outlook DASL 筛选器选择 Where In
【发布时间】:2015-11-22 22:26:53
【问题描述】:

我正在使用 Outlook VSTO AdvancedSearch 功能从它们各自的PR_MESSAGE_ID 中搜索邮件列表。

我的查询看起来像

 http://schemas.microsoft.com/mapi/proptag/0x1035001E = 'targetId1' OR
 http://schemas.microsoft.com/mapi/proptag/0x1035001E = 'targetId2' OR
 http://schemas.microsoft.com/mapi/proptag/0x1035001E = 'targetId3' OR 
 http://schemas.microsoft.com/mapi/proptag/0x1035001E = 'targgetId4' ...etc.

我质疑这种方法的性能,我想知道是否有更优雅的查询,类似于 SELECT something WHERE 'MESSAGE_ID' IN (targetId1, targetId2, etc.)

【问题讨论】:

    标签: c# outlook vsto advanced-search


    【解决方案1】:

    不,AdvancedSearch 是正确的选择,因为搜索是在后台执行的,不会阻塞 UI 线程。此外,您可以在多个文件夹中搜索项目。

    所有 DASL 查询都以区分大小写的前缀“@SQL=”开头,Application.AdvancedSearch 的 DASL 查询除外。

    请参阅Filtering Items 了解其他替代方案。

    【讨论】:

    • 我想你误会了,如果不清楚,抱歉。我编辑了这个问题。实际上,我不是在寻找另一种搜索方法,而是另一种 DASL 查询以传递给 AdvancedSearch 方法。
    • 请参阅Filtering Items 了解其他替代方案。
    • 我已经看过这个资源了。我没有看到任何“包含”或“输入”运算符。
    • IN 不被支持仅仅是因为在 MAPI 级别上没有这样的限制——它只暴露了 RES_OR 限制,这在功能上是完全一样的。
    • 是的。 OR 查询是您能做的最好的事情。
    猜你喜欢
    • 2012-02-12
    • 2019-12-03
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    相关资源
    最近更新 更多