我在查詢使用C#的Azure表存儲,它返回一個IEnumerable。我正在使用.Select()從我的結果中獲取兩個不同的屬性,但每個屬性的計數都不正確。例如:IEnumerable.Select()返回意外的結果
IEnumerable<SomeClass> results = table.ExecuteQuery(query);
IEnumerable<DateTime> dates = results.Select(x => x.Date);
IEnumerable<double> doubles = results.Select(x => x.Doubles);
每個結果都有日期和一個雙值(我已經驗證了這一點),所以他們每個人的數量應該是完全一樣彼此的結果,但他們回來一樣。我可能有300k的成績,然後是299,997日和300,003雙。
當我做這樣的事情:
results.ToList();
,然後使用。選擇()我得到正確的結果。我試圖避免首先將記錄轉換爲列表,因爲它需要太長時間。我也想避免使用for循環或foreach循環,因爲它們也需要很長時間。
我的問題是:有沒有一種方法可以在IEnumerable上使用.Select()並獲得準確的結果?還是有另一種方法來做到這一點會非常快?
注意:我將這些數據繪製在xy圖上,對於約300k條記錄,大約需要1分30秒。大約90%的時間是由於我有一個foreach循環。如果我首先轉換爲列表,則需要更長的時間來處理。在IEnumerable上使用.Select()非常快,但我需要可靠的結果,並且x值的數量必須與y值相同。
在某些行上日期是否等於'DateTime.MinValue'?也許安非他明類興奮劑正在跳過這一點 –
如何檢查每個查詢結果的行數?在這兩種情況下,你都會返回'IEnumerable',只有當你迭代它時纔會執行它。 – Fabio
不。我一直在測試環境中輸入這些記錄,日期始終是數據發佈的當前日期。 – CSchroeder