Comment convertir List en List ?

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.ConvertAll

 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; }