我正在努力以程序化方式删除旧的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;
答案 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)
{
}