簡體   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