2016-09-26 76 views
1

我有一段代碼使用DASL查詢來查詢保存在RDOFolder中的項目的用戶屬性中的值,如下所示: rdoFolder.Items.Find("\"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/MyUserPropertyName/0x0000001F\"='queryValue'" 但是,現在我需要遷移數據保存在我的用戶屬性中的RDOMail項目的Field屬性。我想知道是否有類似的方式來查詢此Field屬性的快速性能。當有數以萬計的項目時,循環瀏覽文件夾中的所有項目以進行值比較可能會非常緩慢。在Outlook中查詢「字段」RDOMail對象

回答

0

我發現RDOFolder.Items.Find方法還搜索通過RDOMail.Fields索引屬性保存的值。就像德米特里在評論中所說的那樣。

例如,如果我這樣設置值:

myRdoMail.Fields["http://schemas.microsoft.com/mapi/string/{8d736f90-8f45-4591-81aa-c85a98f1261b}/MyUserProperty"] = "MyValue"; 

然後我就可以通過執行以下操作找到此文件:

var result = myRdoFolder.Items.Find("\"http://schemas.microsoft.com/mapi/string/{8d736f90-8f45-4591-81aa-c85a98f1261b}/MyUserProperty\"='MyValue'"); 
0

您可以將相同的DASL名稱傳遞給RDOMail.Fields索引屬性。

+0

我有一個類似的問題。你的意思是你可以這樣做:'rdoMail.Fields [「\」http://schemas.microsoft.com/mapi/string/ {00020329-0000-0000-C000-000000000046}/MyUserPropertyName/0x0000001F \「 = 'queryValue'「]'?即使你可以這樣做,代碼是否仍然需要遍歷特定文件夾中的所有項目,並對每個項目的所有字段執行上述查詢? –

+1

您可以執行'rdoMail.Fields [「http://schemas.microsoft.com/mapi/string/ {00020329-0000-0000-C 000-000000000046}/My UserPropertyName/0x0 000001F」]' 。既然這個問題是關於一個特定的RDOMail對象,是的,它必須首先打開。如果您想在單個調用中查詢多個項目,則可以使用RDOFolder.Items.Find/FindNext/Restrict或ExecSQL。 –