使用“查找”在 Outlook/Redemption 中查找用户 属性

Using Find to find a user property in Outlook/Redemption

我正在尝试从我们的 C# windows 桌面应用程序 return 来自 Outlook 的单个日历项。它保持 returning 这个错误: Redemption.RDOItems 断言失败:字段数 == 1。

我在自己创建的 Outlook 插件中使用了类似的代码,并且运行良好。主要区别在于过滤器前缀。 在插件中我使用:

string filterprefix = "[" +  OurCustomProperty.OurItemId + "] = '";  
var filter1 = filterprefix + parentItem.NeedlesId + "'";
var findItem = folder.Items.Find(filter1);

但此代码不适用于我们的桌面应用程序。

这是来自桌面应用程序的代码,return出现错误:

appointment.Id 包含我们在创建项目时设置的有效值。

string Filterprefix = "@SQL="+"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/OurCustomProperty.OurItemId/0x0000001f = '";
RDOSession rdoSession = new RDOSession();
rdoSession.Logon("", "", false, false, null, false);

RDOFolder folderRDO = rdoSession.GetDefaultFolder(rdoDefaultFolders.olFolderCalendar);

var filter1 = filterprefix + appointment.Id + "'";
string ls_find = Filterprefix +  appointment.Id + "'" ;
var findItem = folderRDO.Items.Find(ls_find);

我尝试了多种语法变体,但似乎无法正确使用。 我也尝试过使用 Sort 然后 Restrict,但也没有成功。

谢谢,瑞克

RDOItems.Find 采用 SQL 语句,请不要使用 @SQL= 前缀 - 它是 OOM 特定的。也不要忘记双引号 DASL 属性 name:

"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/OurCustomProperty.OurItemId/0x0000001f" = '<some value>'