2012-08-02 31 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)