繁体   English   中英

将逗号分隔的字符串转换为int列表并进行验证

[英]Convert comma separated string to int list and validate

我已经将逗号分隔的字符串转换为List。 在列表包含空值或无效值时出现问题,如何跳过无效值?

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();

您可以尝试使用TryParse代替Parse

List<int> list = model
   .Categories
   .Split(',')
   .Select(item => {
      int value;
      bool parsed = int.TryParse(item, out value);

      return new {
        parsed = parsed,
        value = value;
      };
    })
   .Where(item => item.parsed)
   .Select(item => item.value)
   .ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM