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

时间:2011-06-01 12:41:41

标签: c#

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

我从表单中收到一组ID。我需要获取密钥,将它们转换为整数并从数据库中选择匹配的记录。

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

14 个答案:

答案 0 :(得分:336)

listofIDs.Select(int.Parse).ToList()

答案 1 :(得分:37)

使用Linq ...

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

答案 2 :(得分:14)

以下是安全变体,用于过滤掉无效的整数:

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引入的新out变量。

此另一个变量返回一个可为空的int列表,其中为无效的int插入null个条目(即保留原始列表计数):

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

答案 3 :(得分:13)

使用Linq:

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

答案 4 :(得分:9)

什么没有TryParse? 过滤掉无效整数的安全LINQ版(适用于C#6.0及以下版本):

List<int>  ints = strings
    .Select(s => { int i; return int.TryParse(s, out i) ? i : (int?)null; })
    .Where(i => i.HasValue)
    .Select(i => i.Value)
    .ToList();

感谢Olivier Jacot-Descombes的想法和C#7.0版本。

答案 5 :(得分:3)

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

HR_EMPMAST.JOBCODE

答案 6 :(得分:1)

将字符串值转换为整数列表

var myString = "010"; 
int myInt;
List<int> B = myString.ToCharArray().Where(x => int.TryParse(x.ToString(), out myInt)).Select(x => int.Parse(x.ToString())).ToList();

答案 7 :(得分:0)

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

var listOfStrings = (new [] { "4", "5", "6" }).ToList();
var listOfInts = listOfStrings.Select<string, int>(q => Convert.ToInt32(q));

答案 8 :(得分:0)

实现此目的的另一种方法是使用linq语句。推荐的答案在.NetCore2.0中对我不起作用。我能够弄清楚但是如果你使用更新的技术,下面也会有效。

[HttpPost]
public ActionResult Report(FormCollection collection)
{
    var listofIDs = collection.ToList().Select(x => x.ToString());
    List<Dinner> dinners = new List<Dinner>();
    dinners = repository.GetDinners(listofIDs);
    return View(dinners);
}

答案 9 :(得分:0)

yourEnumList.Select(s => (int)s).ToList()

答案 10 :(得分:0)

您可以通过LINQ使用它

     var selectedEditionIds = input.SelectedEditionIds.Split(",").ToArray()
                            .Where(i => !string.IsNullOrWhiteSpace(i) 
                             && int.TryParse(i,out int validNumber))
                            .Select(x=>int.Parse(x)).ToList();

答案 11 :(得分:0)

intList = Array.ConvertAll(stringList, int.Parse).ToList();

答案 12 :(得分:0)

对于这个简单的问题,这可能是多余的。但是对于与Linq有关的Try-Do方法,我倾向于使用匿名类来表达更具表现力的代码。它类似于Olivier Jacot-DescombesBA TabNabber的答案:

List<int> ints = strings
    .Select(idString => new { ParseSuccessful = Int32.TryParse(idString, out var id), Value = id })
    .Where(id => id.ParseSuccessful)
    .Select(id => id.Value)
    .ToList();

答案 13 :(得分:-1)

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