我有一些需要List<int?>
并且我有一个List<int>
。
我可以写:
var items = value.Select(num => (int?) num).ToList();
但这真的是最简单的方法吗?
答案 0 :(得分:13)
这会有用吗?
var items = value.Cast<int?>().ToList();
答案 1 :(得分:3)
您也可以使用List.ConvertAll
List<int?> items = value.ConvertAll<int?>(i => i);
它甚至可以在.NET 2中运行。除此之外没有任何优势,因此我将继续使用LINQ(Enumerable.Cast
,如Tamim Salem所建议的那样),因为它更具可用性和可读性。
但如果你需要一个List<int?>
而不是一个List<int>
为什么不首先使用一个呢?
答案 2 :(得分:0)
您可以使用:
List<int?> newList = oldList.ConvertAll<int?>(i => i);
虽然它可能与下面的东西差不多相同。
答案 3 :(得分:0)
试试这个
var result1 = list.ConvertAll<int?>(x => x);
答案 4 :(得分:0)
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和投影。
答案 5 :(得分:0)
避免演员阵容和转换
List<int?> nullInts = new List<int?>();
listInts.ForEach(i => nullInts.Add(new int?(i)));
答案 6 :(得分:0)
如果你发现自己做了这么多,你可以用扩展方法实现@ 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();