2012-10-25 98 views

回答

6
var list = numberString.Select(c => Int32.Parse(c.ToString())).ToList(); 

或者,如果你宁愿添加到现有列表:

list.AddRange(numberString.Select(c => Int32.Parse(c.ToString())); 
5
var list = new List<int>(); 

list.AddRange(
    from character in numericString 
    select int.Parse(character)); 
5
List<int> numericlist = "2670053157".Select(c => c - '0').ToList(); 
+0

你在那里做了什么? 'c - '0'' – Silvermind

+1

@Silvermind - 字符是整数。从'2'(50)中删除'0'(48)会导致2. –

+0

我不会建议这样做的唯一原因是因为它不会正确处理存在非数字字符的情况在字符串中。 –

1

如果你害怕的异常被抛出由于不当的投入,你总是可以去安全路线:

// string input = TextBox1.Text; 
List<int> intList = new List<int>(); 

foreach (char c in input) 
{ 
    int i; 
    if (Int32.TryParse(c.ToString(), out i)) 
    { 
     intList.Add(i); 
    } 
} 
1

从帮手我开始的ThOD:

public static IEnumerable<short> getDigits(long input) 
{ 
    while (input > 0) 
    { 
     yield return (short)(input % 10); 
     input /= 10; 
    } 
} 

然后,如果你想在一个列表中的值,只需调用ToList

List<short> list = getDigits(2670053157).ToList(); 

如果你想在高阶位首先你需要Reverse序列:

List<short> list = getDigits(2670053157).Reverse().ToList();