2012-04-05 10 views
1

Ich bin wirklich neu zu Linq Aussagen, aber lassen Sie mich sagen, dass ich sie liebe. Alle hier hier ist mein ProblemStatement für Query

var faults = from e in _context.Faults 
        where e.Car_FK == Car_ID && e.Model_FK == Model_ID 
        select new { e.Time, e.Drive_Type}; 

ich mich gefragt, ob es möglich ist, haben eine if-Anweisung in dort, so dass, wenn Model_ID nicht vorhanden ich einen anderen Wert wie

 ViewData["Message"] = "Please make another selection" 

I einstellen bin übergeben Car_ID und Model_ID

+0

Werfen Sie einen Blick auf [http: // Stacko verflow.com/questions/1030041/if-statement-inside-a-linq-select](http://stackoverflow.com/questions/1030041/if-statement-inside-a-linq-select) –

+1

nur hinzufügen, var ist eine implizit typisierte Variable, die den Typ enthält, der ihr zur Kompilierungszeit zugewiesen wurde. Diese Anweisungen sind LINQ-Abfrageausdrücke. – Habib

+0

Um es aufzulösen: Was geht normal in ViewData? Mit welchem ​​Tag? –

Antwort

1

Nachdem gemacht Ihre Abfrage, können Sie die Verfügbarkeit von Elementen mit der Any LINQ-Erweiterungsmethode testen

if (faults.Any()) { 
    // Display faults 
} else { 
    ViewData["Message"] = "Please make another selection" 
} 
-1

Sie können den Operator ? : verwenden, um eine if-Anweisung in Ihrer Abfrage oder wenn Sie ein Element basierend auf der Bedingung filtern müssen, können Sie es in die where Klausel einfügen.

aber in Ihrem Fall möchten Sie wahrscheinlich diese außerhalb der Abfrage setzen, weil Sie die Logik der Anwendung ändern möchten:

if(Model_ID==null) 
    ViewData["Message"] = "Please make another selection" 
else 
{ 
    var faults = from e in _context.Faults 
       where e.Car_FK == Car_ID && e.Model_FK == Model_ID 
       select new { e.Time, e.Drive_Type}; 
    //... 
} 

Edit: Siehe Kommentare

+2

Obwohl korrekt ist dies nicht hilfreich. Vielleicht solltest du erklären, was es ist oder einen Link zu einem Beispiel geben –

+0

Entschuldigung, ich habe zu schnell geantwortet. Ich habe meine Antwort korrigiert, bitte beachten Sie Ihren Downvote. – aKzenT

+1

@AshBurlaczenko ist es nicht einmal richtig: das OP scheint unterschiedliche Verhalten basierend auf einer Bedingung, nicht einfach einen anderen Wert basierend auf einer Bedingung zu wollen. Mit dem bedingten Operator können Sie das nicht tun. – phoog