2014-04-19 52 views
1

我想查詢在MongoDB中,我得到了以下錯誤:MongoDB的C#可空日期時間查詢

Unable to determine the serialization information for the expression: c.IndexMetadata.Indexed.HasValue.

其中索引是一個可空的日期時間

我的查詢如下:

Collection.AsQueryable<Candidate>(c => !c.IndexMetadata.Indexed.HasValue || c.IndexMetadata.Updated.Value > c.IndexMetadata.Indexed.Value).ToList(); 

兩個索引更新是可空類型的日期時間

我想這是因爲HasValue沒有直接翻譯成mongo Query,任何解決方法?

+0

不能相互比較兩個字段。你不得不將它們與常量進行比較。瞭解如何編寫查詢的一個好方法是首先將它寫入shell,並確保它按預期工作。 –

+0

@CraigWilson我可以重構,以避免兩列比較,但我仍然需要解決hasValue錯誤,謝謝你的頭! –

+1

也許你現在可以使用!= null。在C#項目中的jira.mongodb.com上提交jira問題。 –

回答

4

您可以比較DateTime?爲null而不是使用HasValue

Collection.AsQueryable<Candidate>(
    c => 
     c.IndexMetadata.Indexed == null || 
     c.IndexMetadata.Updated.Value > c.IndexMetadata.Indexed.Value). 
    ToList();