2016-09-26 22 views
1

私は、このようなものRDOFolder内の項目のユーザープロパティに保存された値を照会するDASLクエリを使用するコードの部分を持っている:今、私はデータを移行する必要がある、しかし rdoFolder.Items.Find("\"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/MyUserPropertyName/0x0000001F\"='queryValue'" をRDOMail項目のFieldプロパティに自分のユーザープロパティで保存されます。私は高速なパフォーマンスのためにこのFieldプロパティを照会する同様の方法があるかどうかを知りたいと思います。数万点のアイテムがある場合、値比較を行うためにフォルダ内のすべてのアイテムをループすることは非常に遅くなる可能性があります。照会「フィールド」オブジェクト

答えて

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

インデックス付きプロパティRDOMail.Fieldsに同じDASL名を渡すことができます。

+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オブジェクトに関するものであるため、最初に開く必要があります。 1回の呼び出しで複数の項目を照会する場合は、RDOFolder.Items.Find/FindNext/RestrictまたはExecSQLを使用します。 –

関連する問題