C# For-Schleife mit LISTE mit LINQ
Ich bin mit LINQ und die Rückgabe einer Liste, um meine Business-Logik-Schicht. Ich'mtrying ändern Sie einen der Werte in der Liste (die änderung der "star" - rating, um ein Bild mit der Anzahl der Sterne).
Obwohl der Zähler (i) scheint zu funktionieren, die FOR-Schleife nicht richtig funktioniert. Das erste mal durch, es Stoppt an der richtigen, WENN es dann aber öffnet sich bei der ELSE-Anweisung, die für alles und alle Werte am Ende mit "star0.png." Es scheint, als ob ich nicht mit dem Fahrrad durch die Liste??? Vielen Dank im Voraus!
for (int i = 0; i < ReviewList.Count; i++)
{
string serviceCode = ReviewList[i].SERVICE.SERVICE_DESC;
if (serviceCode == "*")
{
ReviewList[i].SERVICE.SERVICE_DESC = "star1.png";
}
else if (serviceCode == "**")
{
ReviewList[i].SERVICE.SERVICE_DESC = "star2.png";
}
else if (serviceCode == "***")
{
ReviewList[i].SERVICE.SERVICE_DESC = "star3.png";
}
else if (serviceCode == "****")
{
ReviewList[i].SERVICE.SERVICE_DESC = "star4.png";
}
else
{
ReviewList[i].SERVICE.SERVICE_DESC = "star0.png";
}
}
- Haben Sie versucht, mit einer foreach item in Liste-Schleife?
- Die Schleife an sich sieht mir Recht sein. Was passiert, wenn Sie Schritt für Schritt durch diese in den debugger? Was sind die Werte der
serviceCode
s? - Haben Sie bestätigt den Inhalt
ReviewList
? - Klingt wie vielleicht eine gemeinsame Referenz.
InformationsquelleAutor Susan | 2011-08-18
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass Ihr eine Ausgabe der
for loop
richtig funktioniert... deine syntax ist gut und wie geschrieben, wird die IterationReviewList.Count
# Male.Ich würde Schritt für Schritt durch und überprüfen Sie den Inhalt der
ReviewList
ersten.Lassen Sie mich wissen, was Sie finden
Wenn alle Werte am Ende auf
star0.png
, dann sind Radfahren durch die Liste. Die Tatsache, dass dieelse
- Anweisung wird der code nur ausgeführt wird, für jedes element, schlägt einen logischen Fehler -- hast du vielleicht meinst, so etwas zu tun?SERVICE_CODE
und stattdessenSERVICE_DESC
- basierend auf Ihren Kommentar, dies ist jedoch eindeutig nicht der Fall. Wenn Sie fügen Sie einen Haltepunkt in Ihremelse
- Anweisung, welche die Werte vonserviceCode
?Wenn Sie wissen, jedes Element besteht aus einer Anzahl von Sternen, warum nicht diese?:
else
voll (auch wenn es vielleicht in der Praxis.)Schutz auf Doppel-pass und mit else-Bedingung
Alternative LINQ Ansatz