LINQ - wenn Bedingung
In code, der kommentierte Teil ist, was ich lösen muss... gibt es eine Möglichkeit zu schreiben, wie Abfragen in LINQ? Ich brauche das, weil ich brauche die Sortierung basierend auf dem Status.
var result = (
from contact in db.Contacts
join user in db.Users on contact.CreatedByUserID equals user.UserID
join deal in db.Deals on contact.ContactID equals deal.ContactID into deals
orderby contact.ContactID descending
select new ContactListView
{
ContactID = contact.ContactID,
FirstName = contact.FirstName,
LastName = contact.LastName,
Email = contact.Email,
Deals = deals.Count(),
EstValue = deals.Sum(e => e.EstValue),
SalesAgent = user.FirstName + " " + user.LastName,
Tasks = 7,
//This is critical part
if(Deals == 0) Status = "Prospect";
else
Status = "Client";
//End of critical part...
})
.OrderBy(filterQuery.OrderBy + " " + filterQuery.OrderType)
.Where(filterQuery.Status);
InformationsquelleAutor ilija veselica | 2010-06-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese nutzt die "Bedingte operator"
Edit: Sie können Kombinationen wie diese:
In diesem Fall, Sie sind mit
deals.Count(
) eine Menge, so dass Sie können speichern Sie das Ergebnis in eine temporäre variable mithilfe der LINQ -let
syntax:Absolut, Sie müssen Sie nur nutzen einige Klammern.. Status = (- Angebote.Count() == 0 ? "No deals" : (- Angebote.Count() == 1 ? "Ein deal" : "Viele Angebote"))
Ich sehe... das ist wirklich toll! Danke!
GvS: Schöner Tipp!
InformationsquelleAutor GvS
InformationsquelleAutor LukeH
deals.Any()
wäre besser 🙂InformationsquelleAutor Cheng Chen