2016-11-01 7 views
0

Es gibt einen zusammengesetzten Primärschlüssel für die Spalten in der WHERE-Bedingung des folgenden Codes, sodass nur ein möglicher Rückgabewert vorhanden sein kann. Ich werde von SingleOrDefault zurückgegeben, aber zur Laufzeit bekomme ich den Fehler in der Frage Titel: "Sequenzoperatoren nicht für den Typ 'System.String' unterstützt." Ich bin ziemlich neu bei LINQ, also könnte die Syntax falsch sein? Jede Hilfe willkommenSequenzoperatoren werden für Typ 'System.String' nicht unterstützt.

using (myContext Data = new myContext()) 
    { 
     string Result = (from d in Data.myTable 
        where d.textColumn == myDropDownList.SelectedValue && d.intColumn == 1 
        select d.anotherTextColumn.SingleOrDefault()).ToString(); 
    } 
+5

Ich glaube, Sie rufen SingleOrDefault auf die falsche Sache , in den Paren statt draußen. Was ist damit: Wählen Sie d.anotherTextColumn **) **. SingleOrDefault() –

+1

dotnetom die Antwort ist richtig, aber für den Fall, dass Sie sich fragen, können Sie nicht ToString in einer Linq-to-Entities-Abfrage aufrufen, weil diese Abfrage muss in sql übersetzt werden, anstatt wie normal ausgeführt zu werden. –

Antwort

2

Sie haben es fast geschafft - Sie brauchen SingleOrDefault() auf dem Abfrage-Objekt aufrufen, anstatt sie auf string Objekt aufrufen:

string Result = (from d in Data.myTable 
       where d.textColumn == myDropDownList.SelectedValue && d.intColumn == 1 
       select d.anotherTextColumn).SingleOrDefault(); 
Verwandte Themen