我已将逗号分隔的字符串转换为列表。 列表包含空值或无效值时出现问题,如何跳过无效值?
List<int> list = model.Categories.Split(',').Select(int.Parse).ToList();
字符串将是 "10,12,3.0,4,1k,5,0.0"
;
最佳答案
如果您想验证只有有效的整数才能到达Select
,请使用int.TryParse
:
int num;
var result = model.Categories.Split(',')
.Where(i => int.TryParse(i, out num))
.Select(int.Parse).ToList();
如果使用 C#7.0 则可以:
var result = model.Categories.Split(',')
.Where(i => int.TryParse(i, out int num))
.Select(int.Parse).ToList();
为了不必解析两次你也可以尝试这样的事情:
Func<string, int?> ParseOrDefault = (input) =>
int.TryParse(input, out int num) ? (int?)num : null;
var result = data.Split(',').Select(ParseOrDefault).Where(i => i != null).ToList();
或者更好:
var result = data.Split(',')
.Select(i => int.TryParse(i, out int num) ? (int?)num : null)
.Where(i => i != null).ToList();
关于c# - 将逗号分隔的字符串转换为 int 列表并验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45231645/