在我的 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并說:
可空值型別可能為空。
我的CourseTotalTime屬性可以為空,而且 EpisodeTimeLength 也可以為空。
我如何解釋as中的null值?示例:應該在.EpisodeTimeLength00:00:00Sum[null, 01:00:00, 01:00:00]02:00:00CourseTotaltime
uj5u.com熱心網友回復:
您可以在 之前排除null值:WhereSum
CourseTotalTime = new TimeSpan(
c.Episodes
.Where(t => t.EpisodeTimeLength.HasValue)
.Sum(t => t.EpisodeTimeLength.Value.Ticks))
或者,您可以指定一個默認值以在t.EpisodeTimeLengthis時使用null:
CourseTotalTime = new TimeSpan(
c.Episodes
.Sum(t => (t.EpisodeTimeLength ?? TimeSpan.Zero).Ticks))
這利用了空合并運算子。
兩種方法的演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/336519.html
標籤:C# asp.net-core-mvc 可空的 时间跨度 可为空引用类型
上一篇:字串串列中的Linq查詢字串陣列
