2009-02-27 8 views
0

Wenn ich einen Code wie folgt schreiben, nehme ich diese Fehlermeldung: "Der Abfrage-Operator 'ElementAtOrDefault' wird nicht unterstützt."Eine Frage über Linq To Sql

Wie kann ich es beheben?

Dim tmpQuestion As New UIData 
    Dim strViews = From t In tmpQuestion.LU_QUESTIONs _ 
         Where t.ID_QUESTION = Request.QueryString("IdQuestion") _ 
         Select t 
    Dim mtViews = strViews(0).MT_VIEWS 

Antwort

3

Sie haben noch nicht wirklich gefragt. strViews ist nicht das Ergebnis, es ist die Abfrage. Sie müssen tatsächlich einige Daten abrufen.

var chosen = strViews.FirstOrDefault(); 
+0

Guter Punkt über die späte Bindung - das kann Sie wirklich vermasseln, wenn Sie nicht vorsichtig sind. –

+0

Danke, dieser Satz ist sehr wichtig: "strViews ist nicht das Ergebnis, es ist die Abfrage." – mavera

0

Ich bin kein Experte in VB oder LINQ2SQL aber bedeutet dies nichts mit der Tatsache zu tun, dass Sie strViews (0) .MT_VIEWS sagen, während es eine Chance, dass strViews null sein kann?

3

Haben Sie versucht, die FirstOrDefault() verwenden, dann überprüfen Sie, ob es nicht null ist. Meine VB-Syntax ist vermutlich suspekt, aber Sie bekommen die Idee.

Dim strView = (From t In tmpQuestion.LU_QUESTIONS _ 
        Where t.ID_QUESTION = Request.QueryString("IdQuestion") _ 
        Select t).FirstOrDefault() 

Dim mtViews as ... 
If Not strView Is Nothing 
    mtViews = strView.MT_VIEWS 
EndIf