【问题标题】:Outlook Interop c# sort items not workingOutlook Interop c# 排序项目不起作用
【发布时间】:2013-08-21 14:58:27
【问题描述】:

我偶然发现了一个问题,即 Outlook 项目表排序方法没有给出所需的结果——尽管 GetLast() 方法总是返回相同的电子邮件项目。代码如下:

Application olApp = new Application();
NameSpace olNS = olApp.GetNamespace("MAPI");
MAPIFolder oFolder = olNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);

Explorer oExp = oFolder.GetExplorer(false);
//olNS.Logon( false, true);

result = new IOActionResult(null);

oFolder.Items.Sort("[ReceivedTime]");

var subject = oFolder.Items.GetLast().Subject;

我已尝试指定以下内容:

oFolder.Items.Sort("[ReceivedTime]", true);
oFolder.Items.Sort("[ReceivedTime]", false);
oFolder.Items.Sort("[ReceivedTime]", OlSortOrder.olAscending);
oFolder.Items.Sort("[ReceivedTime]", OlSortOrder.olDescending);

这似乎也不起作用...任何想法表示赞赏!

【问题讨论】:

    标签: c# outlook interop ms-office


    【解决方案1】:

    在你的最后一行;

    var subject = oFolder.Items.GetLast().Subject;

    您从 Outlook 返回一个新的 Items 对象,因此您的排序实际上是在您不再引用的实例上执行的。

    将您的代码更改为如下所示;

    Application  olApp = new Application();
    NameSpace olNS = olApp.GetNamespace("MAPI");
    MAPIFolder oFolder = olNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
    
    Items items = oFolder.Items;
    items.Sort("[ReceivedTime]");
    
    var subject = items.GetLast().Subject;
    

    针对 Outlook 进行开发时,一个好的经验法则是始终将对象的中间成员分配给它们自己的局部变量。这对于稍后发布它们特别重要。

    【讨论】:

    • 非常感谢。您在最后一行的 Subject 属性上有括号,可能需要删除那些以免混淆其他人。
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    相关资源
    最近更新 更多