EWS 搜索子字符串的约会正文

Posted

技术标签:

【中文标题】EWS 搜索子字符串的约会正文【英文标题】:EWS Search Appointment Body for Substring 【发布时间】:2013-08-26 23:16:13 【问题描述】:

我需要在用户的日历约会中搜索子字符串。我没有关于约会的任何其他信息(GUID、开始日期等)。我只知道正文中有一个特定的子字符串。

我已经阅读了几篇关于如何获取约会正文的文章,但他们通过 GUID 或主题进行搜索。我正在尝试使用下面的代码在正文中搜索子字符串,但我收到一个错误,提示我无法在 FindItems 中使用正文。

有没有办法做到这一点?假设我无法从约会中获得任何其他信息,我可以采取其他方法吗?

        //Variables
        ItemView view = new ItemView(10);
        view.PropertySet = new PropertySet(EmailMessageSchema.Body);

        SearchFilter sfSearchFilter;
        FindItemsResults<Item> findResults;

        foreach (string s in substrings)
        
            //Search for messages with body containing our permURL
            sfSearchFilter = new SearchFilter.ContainsSubstring(EmailMessageSchema.Body, s);
            findResults = service.FindItems(WellKnownFolderName.Calendar, sfSearchFilter, view);

            if (findResults.TotalCount != 0)
            
                Item appointment = findResults.FirstOrDefault();
                appointment.SetExtendedProperty(extendedPropertyDefinition, s);
             

【问题讨论】:

【参考方案1】:

事实证明,您可以搜索正文,但不能使用FindItems 返回正文。如果你想使用它,你必须稍后加载它。所以我没有将我的属性设置为正文,而是将其设置为IdOnly,然后将SearchFilter 设置为遍历ItemSchema 的正文。

        //Return one result--there should only be one in this case
        ItemView view = new ItemView(1);
        view.PropertySet = new PropertySet(BasePropertySet.IdOnly);

        //variables
        SearchFilter sfSearchFilter;
        FindItemsResults<Item> findResults;

        //for each string in list
        foreach (string s in permURLs)
        
            //Search ItemSchema.Body for the string
            sfSearchFilter = new SearchFilter.ContainsSubstring(ItemSchema.Body, s);
            findResults = service.FindItems(WellKnownFolderName.Calendar, sfSearchFilter, view);

            if (findResults.TotalCount != 0)
            
                Item appointment = findResults.FirstOrDefault();
                appointment.SetExtendedProperty(extendedPropertyDefinition, s);
                ...
                appointment.Load(new PropertySet(ItemSchema.Body));
                string strBody = appointment.Body.Text;
            
         

【讨论】:

以上是关于EWS 搜索子字符串的约会正文的主要内容,如果未能解决你的问题,请参考以下文章

Python:在字符串列表中最佳搜索子字符串

如何搜索子字符串(WHERE列LIKE'%foo%')

sql MSSQL搜索子字符串

Gcloud 日志查看器 - 搜索子字符串过滤器不起作用

Swift忽略大小写搜索子字符串的三种方法及性能对比

Swift忽略大小写搜索子字符串的三种方法及性能对比