我正在使用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.");
我試圖運行在不同的結果集,並用不同的頁大小的代碼,結果總是一樣的:ItemIds永遠比不上但ID字符串總是匹配。
問題
我不願意放棄微軟,取而代之的是字符串比較的方法特別是我無法解釋爲什麼FolderID比較法是行不通的推薦的方式。但是,另一方面,我無法解釋爲什麼字符串比較總是起作用。有沒有人對我爲什麼會看到這些奇怪而矛盾的結果有任何想法。