如何在兑换中将当前代码转换为 Item.restrict

how to convert current code to Item.restrict in redemption

我在复制到文件夹之前正在检查重复项目。我检查了第一个文件夹。如果不存在,则创建然后使用兑换检查项目是否重复。

我的密码是

childParent.Items.OfType<RDOMail>().FirstOrDefault(x => x.Subject != null && x.Subject == mailItem.Subject && x.SenderEmailAddress == mailItem.SenderEmailAddress && x.ReceivedTime == mailItem.ReceivedTime); 

如果我在侧文件夹中有很多项目,此代码会花费太多时间

我试图将上面的代码转换为

childPrent.Items.Restrict(filter);

但它不起作用。

 string filter=$"[Subject]='hello test' AND [ReceivedTime]='2020-05-07 05:07:22' AND [SenderEmailAddress]='user@ashyam.com';

如果我将 ReceivedTime 设置为相同的日期,则无法正常工作。

我正在使用兑换和 C# 编程

谢谢 希亚姆

Outlook 根据 Windows 控制面板的区域和语言选项小程序中的时间格式、短日期格式和长日期格式设置评估日期时间值。特别是,Outlook 根据不带秒的指定时间格式评估时间。 如果您在日期时间比较字符串中指定秒数,过滤器将不会按预期运行。您需要从过滤器中排除秒数。

另一个方面——建议比较日期间隔,不要直接点时间。

但我建议改为比较 PR_SEARCH_KEY 属性 值。 属性 为相关对象(例如邮件副本)提供跟踪,并有助于查找不需要的事件,例如重复的收件人。

MAPI 使用特定规则为邮件收件人构建搜索键。搜索键由地址类型(大写字符)、冒号字符“:”、规范形式的电子邮件地址和终止空字符连接而成。这里的规范形式意味着区分大小写的地址以正确的大小写出现,而不区分大小写的地址被转换为大写。这对于保持消息之间的相关性很重要。

首先,不要使用[] - 兑换使用SQL语法,[]是为了OOM。 其次,永远不要将 = 与 DateTime 属性一起使用:由于舍入错误,即使您确实指定了毫秒(您没有指定),也永远不会满足条件。始终使用范围:

 string filter=$"(Subject='hello test') AND (ReceivedTime > '2020-05-07 05:07:21') AND  (ReceivedTime < '2020-05-07 05:07:23') AND (SenderEmailAddress='user@ashyam.com');