我创建了一个过滤器,用于比较自定义用户属性的值,并仅显示符合要求的电子邮件。
当我有=
比较值时,过滤器起作用,但当我有<=
运算符时,过滤器不起作用。
下面是我的过滤器。 这行得通。
string filter= $"@SQL=\"http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000-000000000046}}/TimeSpent/0000001f\" = '60'";
Outlook.Items restrictedMails = selectedFolder.Items.Restrict(filter);
这行不通。
string filter= $"@SQL=\"http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000-000000000046}}/TimeSpent/0000001f\" <= '60'";
Outlook.Items restrictedMails = selectedFolder.Items.Restrict(filter);
在自定义文件中保存值的代码如下。
int duration = (int)completed.Subtract(received).TotalMinutes;
try
{
MailUserProperties = SelectedMail.UserProperties;
MailUserProperty = MailUserProperties.Add("TimeSpent", Outlook.OlUserPropertyType.olText, true, 1);
MailUserProperty.Value = duration;
SelectedMail.Save();
}
有人可以在这里帮助如何使过滤器正常工作吗?
谢谢。
答案 0 :(得分:1)
string filter= $"@SQL=\"http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000-000000000046}}/TimeSpent/0000001f\" = '60'";
此处60
不是数字,而是字符串。因此,基本上,比较了两个字符串。
MailUserProperty = MailUserProperties.Add("TimeSpent", Outlook.OlUserPropertyType.olText, true, 1);
您添加字符串用户属性,然后要应用比较器。仅对整数值有意义。因此,代码应类似于以下代码:
MailUserProperty = MailUserProperties.Add("TimeSpent", Outlook.OlUserPropertyType.olInteger, true, 1);
只有这样,您才可以尝试使用以下过滤器:
string filter= $"@SQL=\"http://schemas.microsoft.com/mapi/string/{{00020329-0000-0000-C000-000000000046}}/TimeSpent/0000001f\" <= 60";