2011-01-04 2 views
1

Hallo Jungs Ich benutze Entity Framework, ich habe einige Probleme beim Überprüfen, ob meine Linq irgendwelche Ergebnisse zurückgegeben, wenn es ein Ergebnis zurückgibt Ich möchte es als Datenquelle verwenden, ist der folgende Code bitte sehen Sie:Wie überprüfe ich, ob meine Linq-Abfrage zu einem Ergebnis geführt hat?

var dbContext = new DBEntities(); 
    try 
    { 
     var linQuery = from cq in dbContext.tblCharacteristics 
         where cq.CharacteristicID.Equals(combobox1.SelectedText) 
         select new 
         { 
          CharacteristicIDs = cq.CharID, 
          CharacteristicNames = cq.CharName 
         }; 

     if (linQuery.Any()) //Also tried with linQuery.Count() != 0 
     { 
      lbChaKeyValues.DataSource = linQuery; 
      lbChaKeyValues.DisplayMember = "CharacteristicNames"; 
     } 
    } 
    catch (System.Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    finally 
    { 
     dbContext.Dispose(); 
    } 

Ich erhalte folgenden Fehler: "DbComparisonExpression erfordert Argumente mit vergleichbaren Typen."

+2

Was ist 'charQuery'? Wie ist es definiert? –

+0

@KMan, eine gültige Frage, obwohl ich nicht denke, das Problem, zumindest diese besondere ist mit dieser Variable. –

+1

möglich duplicate von [wie zu wissen, wenn meine linq-abfrage null zurückgibt] (http://stackoverflow.com/questions/4132514/how-to-know-if-my-linq-query-returns-null) – Guffa

Antwort

3

Wenn CharacteristicID ein Integer-Typ ist, funktioniert der Vergleich nicht. Stattdessen versuchen

var inputFromUser = Int32.Parse(combobox1.SelectedText); 

    var linQuery = from cq in dbContext.tblCharacteristics 
        where cq.CharacteristicID == inputFromUser 
        select new 
        { 
         CharacteristicIDs = cq.CharID, 
         CharacteristicNames = cq.CharName 
        }; 

Übrigens .Any() ist der richtige Weg für die Suchergebnisse zu testen. Und wenn Sie die Rückgabeergebnisse nicht verwenden möchten, müssen die Daten nicht in einen anonymen Typ projiziert werden. Verwenden Sie einfach select true oder select cq, wodurch der Optimierer den besten Index in der Datenbank verwenden kann.

+0

scheint wie ein tryparse könnte robuster sein, da wir mit Benutzereingaben hier zu tun haben –

Verwandte Themen