如何在 sum() 方法中处理 "Nullable value type may be null" (对于 TimeSpan)?
How to handle "Nullable value type may be null" (for TimeSpan) inside the sum() methode?
在我的 Asp.net 核心项目中,我需要检查空 TimeSpan
属性。
这是我的方法:
return result.Include(e => e.Episodes).AsEnumerable().Select(c => new ShowListCoursesViewModel()
{
CourseId = c.CourseId,
CourseImageName = c.CourseImageName,
CoursePrice = Convert.ToDecimal(c.CoursePrice),
CourseTitle = c.CopurseTitle,
CourseTotalTime = new TimeSpan(c.Episodes.Sum(t => t.EpisodeTimeLength.Value.Ticks) )
}).Skip(skip).Take(take).OrderByDescending(d => d.CoursePrice).ToList();
它在 t.EpisodeTimeLength
下方显示一个绿色的波浪线,上面写着:
Nullable value type may be null.
我的 CourseTotalTime
属性 可以为空,而且 EpisodeTimeLength 也可以为空。
如何将 EpisodeTimeLength
的 null
值解释为 Sum
中的 00:00:00
?示例:[null, 01:00:00, 01:00:00]
应该在 CourseTotaltime
.
中产生 02:00:00
您可以在 Sum
:
之前使用 Where
排除 null
值
CourseTotalTime = new TimeSpan(
c.Episodes
.Where(t => t.EpisodeTimeLength.HasValue)
.Sum(t => t.EpisodeTimeLength.Value.Ticks))
或者,您可以指定在 t.EpisodeTimeLength
为 null
时使用的默认值:
CourseTotalTime = new TimeSpan(
c.Episodes
.Sum(t => (t.EpisodeTimeLength ?? TimeSpan.Zero).Ticks))
这利用了 null-coalescing operator。
在我的 Asp.net 核心项目中,我需要检查空 TimeSpan
属性。
这是我的方法:
return result.Include(e => e.Episodes).AsEnumerable().Select(c => new ShowListCoursesViewModel()
{
CourseId = c.CourseId,
CourseImageName = c.CourseImageName,
CoursePrice = Convert.ToDecimal(c.CoursePrice),
CourseTitle = c.CopurseTitle,
CourseTotalTime = new TimeSpan(c.Episodes.Sum(t => t.EpisodeTimeLength.Value.Ticks) )
}).Skip(skip).Take(take).OrderByDescending(d => d.CoursePrice).ToList();
它在 t.EpisodeTimeLength
下方显示一个绿色的波浪线,上面写着:
Nullable value type may be null.
我的 CourseTotalTime
属性 可以为空,而且 EpisodeTimeLength 也可以为空。
如何将 EpisodeTimeLength
的 null
值解释为 Sum
中的 00:00:00
?示例:[null, 01:00:00, 01:00:00]
应该在 CourseTotaltime
.
02:00:00
您可以在 Sum
:
Where
排除 null
值
CourseTotalTime = new TimeSpan(
c.Episodes
.Where(t => t.EpisodeTimeLength.HasValue)
.Sum(t => t.EpisodeTimeLength.Value.Ticks))
或者,您可以指定在 t.EpisodeTimeLength
为 null
时使用的默认值:
CourseTotalTime = new TimeSpan(
c.Episodes
.Sum(t => (t.EpisodeTimeLength ?? TimeSpan.Zero).Ticks))
这利用了 null-coalescing operator。