2

List<int?>null 以外の場所をList<int>ループなしに変換する巧妙な方法はありますか?

4

3 に答える 3

7

ここではコードにループはありません。これにより、質問のnull以外の部分に基づいてnull値が破棄されます。

var values = given.Where(n => n.HasValue).Select(n => n.Value).ToList();
于 2012-11-08T22:49:06.433 に答える
3

null合体演算子を使用できます:

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 に答える