如何制作int

时间:2016-06-30 10:06:31

标签: c# .net

我有这个字符串:

string alertsId = "1,2,3,4";

然后我将字符串转换为整数列表:

List<int> list = alertsId.Split(',').Select(n => Convert.ToInt32(n)).ToList();

如何将上面的列表转换为可以为空的列表?

4 个答案:

答案 0 :(得分:5)

一个List<int>是一个引用类型,因此根据定义可以为空。所以我想你想创建一个可空整数列表(List<int?>

您只需使用Cast<T>()

即可
List<int?> nullableList = list.Cast<int?>().ToList();

或直接创建:

List<int?> list = alertsId.Split(',').Select(n => (int?)Convert.ToInt32(n)).ToList();

答案 1 :(得分:2)

定义一个函数:

public int? ParseToNullable(string s)
{
    int? result = null;
    int temp = 0;
    if (int.TryParse(s, out temp)) 
    {
         result = temp;
    }
    return result;
}

然后像这样使用它:

string alertsId = "1,2,3,4";
List<int?> list = alertsId.Split(',').Select(n => ParseToNullable(n)).ToList();

答案 2 :(得分:0)

您可以列出Nullable列表并将列表中的每个元素复制到可以为空的元素中,如下例所示:

            List<Nullable<int>> a = new List<Nullable<int>>();
            List<int> b = new List<int> { 1, 3, 4 };
            foreach (var c in b)
            {
                a.Add((Nullable<int>)c);
            }

答案 3 :(得分:0)

我对linq派对的反应

string alertsId = "1,2,3,4,crap";
List<int?> list = alertsId.Split(',')
           .Select(s => { int i; return int.TryParse(s, out i) ? i : (int?)null; })
           .ToList();

首先我们用逗号分割,然后我们尝试解析每个元素,如果它不是可解析的,我们返回null,然后我们将我们一直使用的数组转换为列表。