我有一个有数字的字符串
string sNumbers = "1,2,3,4,5";
Run Code Online (Sandbox Code Playgroud)
我可以将它拆分然后转换为 List<int>
sNumbers.Split( new[] { ',' } ).ToList<int>();
Run Code Online (Sandbox Code Playgroud)
如何将字符串数组转换为整数列表?这样我就可以转换string[]为IEnumerable
mqp*_*mqp 429
var numbers = sNumbers.Split(',').Select(Int32.Parse).ToList();
Run Code Online (Sandbox Code Playgroud)
Joz*_*oze 31
你也可以这样做而不需要Linq:
List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );
// Uses Linq
var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList();
Run Code Online (Sandbox Code Playgroud)
小智 18
Joze的方式还需要LINQ,ToList()在System.Linq命名空间中.
您可以通过将数组传递给List构造函数将Array转换为List而不使用Linq:
List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );
Run Code Online (Sandbox Code Playgroud)
aoz*_*gul 10
更好地使用int.TryParse以避免异常;
var numbers = sNumbers
.Split(',')
.Where(x => int.TryParse(x, out _))
.Select(int.Parse)
.ToList();
Run Code Online (Sandbox Code Playgroud)
int数组也可以直接赋值.
像这样
int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray();
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用新的 C# 6.0 语言功能:
(s) => { return Convert.ToInt32(s); }用相应的方法组替换委托Convert.ToInt32 new Converter<string, int>(Convert.ToInt32)为:Convert.ToInt32结果将是:
var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));
Run Code Online (Sandbox Code Playgroud)