2012-08-02 53 views
1

時,我有一個查詢,看起來像這樣:InvalidCastException的執行選擇

surveyCompleted = from s in surveyCompleted 
       where agentTickets.Contains(s.TicketID.Value) || s.UserID == new Guid(txtUserID.Text) select s; 

的問題是,這種說法後,我無法做任何事情surveyCompleted因爲我得到一個InvalidCastException。任何想法爲什麼發生這種情況與surveyCompleted所有其他選擇語句工作得很好,但這一個失敗?它可能來自where子句中的「agentTickets.Contains(s.TicketID.Value)」語句嗎?

+0

*你會得到例外嗎?請告訴你如何*使用* surveyCompleted'。 – 2012-08-02 14:41:58

+0

它在surveyCompleted.ToList()上崩潰或當我嘗試在Visual Studio調試模式下枚舉集合時,我仍然得到異常 – Alecu 2012-08-02 14:43:43

+1

並且異常中是否還有更多細節?基本上,請給我們儘可能多的信息,你可以。 (我們目前甚至不知道這是LINQ to Objects還是LINQ to SQL等...) – 2012-08-02 14:46:14

回答

1

如果txtUserIDTextBox(名稱導致這麼認爲),那麼new Guid(txtUserID.Text)會如果它不包含精確Guid樣串(xxxxxxxx-扔xxxx-xxxx-xxxx-xxxxxxxxxxxx)

1

嘗試使用此代碼

from s in surveyCompleted 
       where agentTickets.Contains(s.TicketID.Value) || s.UserID == new Guid(txtUserID.Text).ToString() select s; 
+1

我對linq很新,但我相信你是對的,當我轉換創建Guid時它應該崩潰,但它被延遲,並且當我嘗試枚舉查詢時崩潰。這是查詢和方法實際執行的時刻 – Alecu 2012-08-02 14:46:38

0

這是一個LINQ to SQL的,對不對?

確保s.TicketID從來都不是NULL:

!Convert.IsDBNull(s.TicketID) && agentTickets.Contains(s.TicketID.Value)