私はEWSを使って商品を探しています。私は結果セットがページサイズより大きくなることを期待しているので、結果セットがページング中に変化しないようにチェックを実装しました。このコードは、Microsoftの推奨するリンクとほぼ同じです。ここでEWSがItemIDを比較して一致していないことを示しますが、ItemID.ToString比較で一致が示されます。
How to: Perform paged searches by using EWS in Exchange
関連するコードスニペットです:
if (results.Items.First<Item>().Id != anchorId)
{
Console.Writeline("The collection has changed while paging. " +
"Some results may be missed.");
}
問題は、私はコレクションが変更されていないと確信しているにもかかわらず、最初のアイテムIDとacnchorIDが一致することはありません、です。さらに、IDを文字列に変換し、以下のように文字列比較を行うと、それらは常に一致します。
string a = results.Items.First<Item>().Id.ToString();
string b = anchorId.ToString();
bool result = a.Equals(b, StringComparison.Ordinal);
Debug.Print("Ordinal comparison: {0}",result ? "equal." : "not equal.");
私は別の結果セットにし、異なるページサイズでコードを実行しようとしていると、結果は常に同じです:アイテムIDが一致することはありませんが、ID列が常に一致します。
質問
私はフォルダID比較アプローチが動作していない理由を私は説明できない、特にとして、文字列の比較アプローチに賛成して、マイクロソフトが推奨するアプローチをドロップするには消極的です。しかし、一方で、文字列比較が常に機能する理由を説明することはできません。なぜ、私がこれらの奇妙で矛盾した結果を見ているのか、誰にも考えがありますか?