Ma question fait partie de ce problème:
Je reçois une collection d’id d’un formulaire. Je dois obtenir les clés, les convertir en nombres entiers et sélectionner les enregistrements correspondants dans la firebase database.
[HttpPost] public ActionResult Report(FormCollection collection) { var listofIDs = collection.AllKeys.ToList(); // List to List List dinners = new List(); dinners= repository.GetDinners(listofIDs); return View(dinners); }
listofIDs.Select(int.Parse).ToList()
Utiliser Linq …
List listofIDs = collection.AllKeys.ToList(); List mySsortingngList = listofIDs.Select(s => int.Parse(s)).ToList();
En utilisant Linq:
var intList = ssortingngList.Select(s => Convert.ToInt32(s)).ToList()
Voici une variante sûre qui filtre les ints invalides:
List ints = ssortingngs .Select(s => Int32.TryParse(s, out int n) ? n : (int?)null) .Where(n => n.HasValue) .Select(n => n.Value) .ToList();
Il utilise les nouvelles variables introduites avec C # 7.0.
Cette autre variante renvoie une liste d’ints nullables où null
entrées null
sont insérées pour des ints invalides (c’est-à-dire qu’elles conservent le nombre de listes d’origine):
List nullableInts = ssortingngs .Select(s => Int32.TryParse(s, out int n) ? n : (int?)null) .ToList();
Qu’est-ce pas TryParse? Version Safe LINQ qui filtre les ints invalides (pour C # 6.0 et versions ultérieures ):
List ints = ssortingngs .Select(s => { int i; return int.TryParse(s, out i) ? i : (int?)null; }) .Where(i => i.HasValue) .Select(i => i.Value) .ToList();
crédit à Olivier Jacot-Descombes pour l’idée et la version C # 7.0.
Je sais que c’est l’ancien article, mais je pensais que c’était un bon ajout: vous pouvez utiliser List
List integers = ssortingngs.ConvertAll(s => Int32.Parse(s));
C’est le moyen le plus simple, je pense:
var listOfSsortingngs = (new [] { "4", "5", "6" }).ToList(); var listOfInts = listOfSsortingngs.Select(q => Convert.ToInt32(q));
Une autre façon de procéder serait d’utiliser une instruction linq. La réponse recommandée ne fonctionnait pas pour moi dans .NetCore2.0. J’ai été en mesure de le comprendre, mais ci-dessous fonctionnerait également si vous utilisez une technologie plus récente.
[HttpPost] public ActionResult Report(FormCollection collection) { var listofIDs = collection.ToList().Select(x => x.ToSsortingng()); List dinners = new List (); dinners = repository.GetDinners(listofIDs); return View(dinners); }
public List ConvertSsortingngListToIntList(List list) { List resultList = new List (); for (int i = 0; i < list.Count; i++) resultList.Add(Convert.ToInt32(list[i])); return resultList; }