Meine Frage ist Teil dieses Problems:
Ich erhalte eine Sammlung von Ausweisen aus einem Formular. Ich muss die Schlüssel abrufen, sie in Ganzzahlen konvertieren und die passenden Datensätze aus der Datenbank auswählen.
[HttpPost]
public ActionResult Report(FormCollection collection)
{
var listofIDs = collection.AllKeys.ToList();
// List<string> to List<int>
List<Dinner> dinners = new List<Dinner>();
dinners= repository.GetDinners(listofIDs);
return View(dinners);
}
listofIDs
eine ist ,IQueryable<string>
die nicht ausgeführt wurde. Führen Sie es zuerst mit aus,ToList()
bevor Sie die Konvertierung durchführen:listofIDs.ToList().Select(int.Parse).ToList()
Verwenden von Linq ...
quelle
Hier ist eine sichere Variante, die ungültige Ints herausfiltert:
Es verwendet die neuen
out
Variablen, die mit C # 7.0 eingeführt wurden.Diese andere Variante gibt eine Liste von nullbaren Ints zurück, in die
null
Einträge für ungültige Ints eingefügt werden (dh die ursprüngliche Listenanzahl bleibt erhalten):quelle
Verwenden von Linq:
quelle
Was kein TryParse? Sichere LINQ-Version , die ungültige Ints herausfiltert (für C # 6.0 und niedriger):
Dank an Olivier Jacot-Descombes für die Idee und die C # 7.0-Version.
quelle
Ich weiß, dass es ein alter Beitrag ist, aber ich dachte, dies ist eine gute Ergänzung: Sie können verwenden
List<T>.ConvertAll<TOutput>
quelle
Dies ist der einfachste Weg, denke ich:
quelle
List<string> sss = new List<string>();
IEnumerable<int> test1 = sss.Select<string, int>(x => Convert.ToInt32(x));
aber nicht:IEnumerable<int> test2 = sss.Select<string, int>(Convert.ToInt32);
Der Fehler ist ein mehrdeutiger Aufruf zwischen demstring,int,int
und derstring,int
Version von Select.Konvertieren Sie den Zeichenfolgenwert in eine Ganzzahlliste
quelle
Eine andere Möglichkeit, dies zu erreichen, wäre die Verwendung einer linq-Anweisung. Die empfohlene Antwort hat in .NetCore2.0 bei mir nicht funktioniert. Ich konnte es jedoch herausfinden und unten würde auch funktionieren, wenn Sie neuere Technologie verwenden.
quelle
Sie können es über LINQ verwenden
quelle
quelle
Dies kann für dieses einfache Problem übertrieben sein. Bei Try-Do-Methoden in Verbindung mit Linq verwende ich jedoch eher anonyme Klassen für ausdrucksstärkeren Code. Es ähnelt den Antworten von Olivier Jacot-Descombes und BA TabNabber :
quelle
quelle
quelle