繁体   English   中英

如何将int列表转换为Nullable列表 <int> ?

[英]How do I convert a list of int to a list of Nullable<int>?

我有一些需要List<int?>东西,我有一个List<int>

我可以写:

var items = value.Select(num => (int?) num).ToList();

但这真的是最简单的方法吗?

这会有用吗?

var items = value.Cast<int?>().ToList();

您也可以使用List.ConvertAll

List<int?> items = value.ConvertAll<int?>(i => i);

它甚至可以在.NET 2中运行。除此之外没有任何优势,因此我将继续使用LINQ(由Tamim Salem建议的Enumerable.Cast ),因为它更具可用性和可读性。

但是如果你需要List<int?>而不是List<int>为什么你不首先使用它?

你可以使用:

List<int?> newList = oldList.ConvertAll<int?>(i => i);

虽然它可能在下面足够接近同样的事情。

尝试这个

 var result1 = list.ConvertAll<int?>(x => x); 
List<int> a = new List<int>() { 1, 2, 3, 4 };
List<Nullable<int>> b = new List<int?>();

for (int i = 0; i < a.Count; i++)
{
    b.Add(new Nullable<int>(a[i]));
}

如果你想省略lambdas和投影。

避免演员表和转换

List<int?> nullInts = new List<int?>();
listInts.ForEach(i => nullInts.Add(new int?(i)));

如果您发现自己这么做,可以在扩展方法中实现@ TamimSalem的解决方案:

public static class EnumerableExt
{
    public static List<T?> ToNullableList<T>(this IEnumerable<T> sequence) where T: struct
    {
        return sequence.Cast<T?>().ToList();
    }
}

然后像这样称呼它:

var items = value.ToNullableList();

暂无
暂无

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

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