In meinem C# -Code muss ich zwei Nicht-Null-Variablen auswerten. Ich habe eine Reihe von if-else wenn Aussagen ausgearbeitet, aber in meinen Augen sieht es hässlich und ein bisschen zu schlampig, auch wenn es korrekt ist.Gibt es eine effiziente Möglichkeit, eine Auswahlanweisung mit zwei Variablen auszuführen?
Ich schaute in der MSDN Library und sah nur Beispiele für die Auswahl basierend auf einer einzelnen Variablen.
Gibt es eine sauberere und kompaktere Methode, um dasselbe Ergebnis zu erzielen?
Update: Ich füllte Code, um mehr Kontext zur Verfügung zu stellen. Wenn ich dies genauer betrachte, kann ich vielleicht die linq-Abfrage direkt basierend auf den Parametern manipulieren. Allerdings stelle ich die Frage die generische, auf die ich mich konzentrieren möchte: die Auswahl eher als der Code, der nach der Auswahl verwendet wird.
public ActionResult Index(string searchBy, string orderBy, string orderDir)
{
var query = fca.GetResultsByFilter(searchBy);
if (orderBy == "Campus" && orderDir == "Asc")
{
query = query = query.OrderBy(s => s.Campus).ThenBy(s => s.Student_Name);
}
else if (orderBy == "Campus" && orderDir == "Desc")
{
query = query.OrderByDescending(s => s.Campus);
}
else if (orderBy == "Student Name" && orderDir == "Asc")
{
query = query = query.OrderBy(s => s.Student_Name);
}
else if (orderBy == "Student Name" && orderDir == "Desc")
{
query = query.OrderByDescending(s => s.Student_Name);
}
else if (orderBy == "Course Count" && orderDir == "Asc")
{
query = query.OrderBy(s => s.Course_Count);
}
else if (orderBy == "Course Count" && orderDir == "Desc")
{
query = query.OrderByDescending(s => s.Course_Count);
}
}
Was ist der '/ * ... Code ... * /'? Sie können LINQ verwenden, um solche Abfragen durchzuführen, wenn Sie davon ausgehen, dass dies der Code ist. – Cyral
Ich sprach in einem allgemeineren Sinne. Dies sind Parameter, die durch eine Formularübergabe an die Funktion gesendet werden. Ich werde meine gepostete Frage ändern, um diesen Kontext bereitzustellen. –
Sie könnten zuerst eine Methode wie If erstellen (check ("campus", "ASC")) ..., dann fügen Sie Ihre Strings in ein Array ein und durchlaufen ... für (i ...) {if (check (strby [i], strdir [i]))} .... oder erstelle ein spezielles Objekt dafür, wenn du zwei Arrays nicht magst ... – ElDuderino