[英]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.