有没有一种巧妙的方法可以将List<int?>
非空的地方变成List<int>
没有循环的地方?
问问题
97 次
3 回答
7
您的代码中没有循环。这将根据问题的where 非空部分丢弃空值。
var values = given.Where(n => n.HasValue).Select(n => n.Value).ToList();
于 2012-11-08T22:49:06.433 回答
3
您可以使用空合并运算符:
var result = myList.Select(x => x ?? default(int)).ToList();
于 2012-11-08T22:53:42.323 回答
2
不,没有参考守恒演员来做到这一点。List<int>
并且List<int?>
是不同的不兼容类型。
您需要创建一个副本,这意味着使用循环(直接或间接)。使用 LINQ 可以避免代码中的显式循环,但显然它仍然在内部使用循环。
于 2012-11-08T22:50:56.343 回答