删除旧Outlook约会

时间:2014-05-06 14:30:59

标签: c# outlook vsto

我正在努力以程序化方式删除旧的Outlook日历约会。我有这个代码,但是我收到的编译错误是“无效的表达式术语'”'但它看起来对我好吗?这是给我带来麻烦的foreach行。

    string strCurrent;
Outlook.Application objApp;
Outlook.NameSpace objNS;
Outlook.MAPIFolder objFolder;
Outlook.Items objItems;
object objItem;
string strStart;
string strEnd;
string strFilter;

strStart = "04/01/2014";
strEnd = "04/28/2014";

strFilter = "[Start] >= " + strStart + " AND [Start] < " + strEnd;
objApp = new Outlook.Application();
objNS = objApp.GetNamespace("MAPI");
objFolder = objNS.GetDefaultFolder(olFolderCalendar);
objItems = objFolder.Items.Restrict(strFilter);
objItem = objItems.GetFirst;
if (objItem = null) { break; }
foreach (object objItem in Outlook.Items objItems) { objItem.Delete; }
objApp = null;
objNS = null;
objFolder = null;
objItems = null;
objItem = null;

2 个答案:

答案 0 :(得分:1)

foreach的格式不正确。 你写道:

foreach (object objItem in Outlook.Items objItems) { objItem.Delete; }

它应该是:

foreach (object objItem in objItems) { objItem.Delete; }

除此之外,在不期望的上下文中存在break

if (objItem = null) { break; }

我还建议使用后退计数器而不是foreach;当你删除一个项目时,集合会被更改,并且会在运行时产生问题。

答案 1 :(得分:1)

foreach的语法是

foreach(TYPE item in collection)
{
}

目前你还有

foreach(TYPE item in ANOTHER_TYPE collection)
{
}

所以你需要像

这样的东西
foreach (var item in objItems)
{
}