将List <int?>转换为List <int>的任何简单方法

Jac*_*ack 4 .net c#

目前我使用List<int> ints = tuple.Item2.Select(s => s.Value).ToList()但是当tuple.Item2有1000个项目时,这看起来效率低下.有没有更好的方法实现这一目标 除了使用for循环.

小智 7

将每个元素转换为一个List<T1>并将结果存储在另一个元素中的内置方法List<T2>List<T1>.ConvertAll.

List<int> ints = tuple.Item2.ConvertAll(s => s.Value);
Run Code Online (Sandbox Code Playgroud)

.Select(...).ToList()or 不同.Cast(...).ToList(),此方法提前知道列表大小,并防止不必要的重新分配.ToList().

为了这个工作,tuple.Item2必须真的是一个List<int?>.它不是扩展方法,它不能在通用IEnumerable<int?>接口上工作.