如何将List <string>转换为List <int>?

我的问题是这个问题的一部分:

我从一个表单收到一个id的集合。 我需要获得键,将它们转换为整数,并从数据库中select匹配的logging。

[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.Select(int.Parse).ToList() 

使用Linq …

 List<string> listofIDs = collection.AllKeys.ToList(); List<int> myStringList = listofIDs.Select(s => int.Parse(s)).ToList(); 

使用Linq:

 var intList = stringList.Select(s => Convert.ToInt32(s)).ToList() 

我知道这是旧的职位,但我认为这是一个很好的补充:您可以使用List<T>.ConvertAll<TOutput>

 List<int> integers = strings.ConvertAll(s => Int32.Parse(s)); 

我认为这是最简单的方法:

 var listOfStrings = (new [] { "4", "5", "6" }).ToList(); var listOfInts = listOfStrings.Select<string, int>(q => Convert.ToInt32(q)); 
  public List<int> ConvertStringListToIntList(List<string> list) { List<int> resultList = new List<int>(); for (int i = 0; i < list.Count; i++) resultList.Add(Convert.ToInt32(list[i])); return resultList; } 

这是一个安全的变体,可以过滤掉无效的整数:

 List<int> ints = strings .Select(s => Int32.TryParse(s, out int n) ? n : (int?)null) .Where(n => n.HasValue) .Select(n => n.Value) .ToList(); 

它使用了C#7.0中引入的新的variables。

这个其他变体返回一个可为null的int列表,其中为无效整数插入null项(即保留原始列表数):

 List<int?> nullableInts = strings .Select(s => Int32.TryParse(s, out int n) ? n : (int?)null) .ToList(); 
 list<int> integersList = decimalList.cast<int>().ToList() 

如果可为空的types,那么只需放置'?' 在它的types之前,像

 list<int?> integersList = decimalList.cast<int?>().ToList()