在空IEnumerable <int>?</int>上为FirstOrDefault()返回null

时间:2009-12-01 10:28:46

标签: c# .net linq

说我有以下代码段:

int? nullableId = GetNonNullableInts().FirstOrDefault();

由于GetNonNullableInts()会返回整数,FirstOrDefault将默认为0 当列表为空时,有没有办法使整数列表上的FirstOrDefault返回null值?

2 个答案:

答案 0 :(得分:44)

int? nullableId = GetNonNullableInts().Cast<int?>().FirstOrDefault();

答案 1 :(得分:1)

FirstOrDefault取决于来自T的{​​{1}}来了解要返回的类型,这就是您收到IEnumerable<T>而不是int的原因。

因此,您需要在返回任何值之前将项目转换为int?,就像Matt said

一样