You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.net中MS EWS 2.0组合And/Or逻辑的SearchFilter语法求助

VB.NET 环境下EWS 2.0 多条件组合搜索实现代码

EWS 中嵌套 And/Or 逻辑需要使用 SearchFilter.SearchFilterCollection 实现,每个集合可指定全局逻辑运算符(And/Or),嵌套不同逻辑的集合即可匹配你的需求。

完整可运行代码示例:

' 导入必要命名空间(需要先引用EWS 2.0程序集)
Imports Microsoft.Exchange.WebServices.Data

' 1. 定义独立筛选条件
' 已读条件
Dim isReadFilter As New SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, True)
' 未读条件
Dim isUnreadFilter As New SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, False)
' 最后修改时间>=指定时间条件
Dim targetModifyTime As DateTime = DateTime.Parse("2021-10-08 16:30")
Dim timeFilter As New SearchFilter.IsGreaterThanOrEqualTo(EmailMessageSchema.LastModifiedTime, targetModifyTime)

' 2. 组合【未读 且 时间符合】的And逻辑
Dim unreadAndTimeValid As New SearchFilter.SearchFilterCollection(LogicalOperator.And)
unreadAndTimeValid.Add(isUnreadFilter)
unreadAndTimeValid.Add(timeFilter)

' 3. 组合【已读 或 (未读且时间符合)】的Or逻辑,得到最终筛选器
Dim finalSearchFilter As New SearchFilter.SearchFilterCollection(LogicalOperator.Or)
finalSearchFilter.Add(isReadFilter)
finalSearchFilter.Add(unreadAndTimeValid)

' 4. 直接使用finalSearchFilter执行搜索即可,示例如下:
' Dim view As New ItemView(100)
' Dim result = exchangeService.FindItems(WellKnownFolderName.Inbox, finalSearchFilter, view)

注意事项

  • 需提前正确初始化EWS的ExchangeService对象,完成身份认证
  • 时间比较不要用IsEqualTo筛选器,需使用对应比较逻辑的IsGreaterThanOrEqualTo筛选器
  • 若存在时区偏差问题,可将targetModifyTime声明为DateTimeOffset类型适配时区

内容的提问来源于stack exchange,提问作者Sean ZA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:27:06