If-Anweisung und Aufgaben in lambda-Ausdrücken
Habe ich eine lambda-Anweisung, die eine Zuordnung wie dieses:
public enum Status
{
Completed,
InComplete,
Ok
}
Abfrage:
var courses = query.Select(c => new SomeModel
{
Status = c.someQuery() ? Status.Completed : Status.Ok
});
So, ich möchte den Status haben mehrere if-Anweisungen und nicht nur eine ternäre operation. Für zB.
var courses = query.Select(c => new SomeModel
{
Status = if(c.someQuery())
{
return Status.Completed;
}
else if(c.someOtherQuery())
{
return Status.InComplete;
}
else if(c.someOtherQuery1())
{
return Status.Ok;
}
});
So, wie ich etwas erreichen wollen? Ich bin mit Entity framework-ORM.
- Es ist sehr wichtig zu unterscheiden, ob Sie mit einem ORM wie L2S oder Entity Framework, übersetzt Ihre Lambda-Ausdrücke in SQL (in dem Fall Ihre Möglichkeiten sind stark begrenzt) oder ob es nur ein gewöhnlicher lambda. In anderen Worten, was ist der Typ von
query
? - Abfrage kann Betriebssystem auf den Zusammenhang
someQuery
werden kann, schließt sich, wheres, jeder, usw kombiniert. - Wenn die Abfrage L2S-oder EF können Sie brauchen, um aufzuzählen, auf die ursprüngliche Abfrage ( wie etwa das aufrufen
.ToList()
) vor der Ausführung von ternären statement gegen es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie Ihr nest ternäre Operationen:
Könnte man vielleicht es so machen?
Verwenden meine linq-genau, es explodieren könnte, in jedem moment 😉
Zu erklären, diese vollständig:
So können Sie ausführen einer Methode(someOtherQuery) und eine enum in Ihrem LINQ, ohne das verschachteln (was ist, baaaaaaad... IMHO).
e.true = false
Als diese Logik konnte nicht übersetzt werden in eine T-SQL-Anweisung, die Sie tun müssen ist, dass im Speicher. Was ich machen würde ist hinzuzufügen, daß die Logik zu Ihrem Modell:
Beachten Sie, dass der Aufruf
ToList()
ausführen wird die Abfrage mithilfe von Entity Framework und dieSelect
ausgeführt werden, die gegen das Objekt Liste.