如果语句正常运行,为什么不这样做

问题描述 投票:0回答:3

此代码旨在在邮箱补液后执行清除操作(来自Symantec Enterprise Vault)。在补液之前,我们获取邮箱中所有项目的MessageIdConversationId的快照索引。

补液后此代码

    if (string.Equals(item.ItemClass, "IPM.Note.EnterpriseVault.Shortcut", StringComparison.InvariantCulture) || ((existingIds.Any(x => x.ConversationId == item.ConversationId.ToString()) == false || (item.ItemClass == "IPM.Appointment" && existingIds.Any(x => x.MessageId == item.Id.ToString()) == false) && item.DateTimeReceived < snapshotDate)))
    {
        item.Delete(DeleteMode.HardDelete);
    }

应删除

  1. ItemClass为“ IPM.Note.EnterpriseVault。快捷方式”的所有项目
  2. ItemClass不在IdexistingIds列表中的MessageId为“ IPM.Appointment”的任何项目,除非它们在`snapshotDate之后收到”>
  3. ConversationId不在列表中的任何其他项目,除非在existingIds之后收到。
  4. 运行此代码后,用户报告丢失了在snapshotDate之后收到的一些电子邮件,因此看来我弄错了snapshotDate语句! :(有人可以告诉我我做错了什么(或者我可以通过分解来更好地理解它的方式)以及这段代码实际上将要完成的工作,以便我可以让用户知道丢失了什么。众所周知,OR很难编写,我认为我在某个地方的括号中犯了一个错误,但是我看不到它。

此代码旨在在邮箱补液后执行清除操作(来自Symantec Enterprise Vault)。我们在...

c# if-statement exchangewebservices
3个回答
1
投票

1
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.