簡體   English   中英

在LINQ中返回null而不是默認值

[英]Return null instead default value in LINQ

我有LINQ查詢,它必須檢索一些DateTime值。 Somethimes我沒有匹配,我必須為該DateTime值返回NULL而不是DateTime的默認值。

我怎樣才能避免這種情況並返回NULL而不是默認值?

我的LINQ:

CreatedDate = ctaMatch.Select(d => d.CreatedDate).DefaultIfEmpty().FirstOrDefault()

在DefaultIfEmpty中,我只能放置DateTime。

把它DateTime? 這將導致DefaultIfEmpty創建一個默認集合,如果集合為空,則該集合包含空值。

CreatedDate = ctaMatch
    .Select(d => (DateTime?)d.CreatedDate)
    .DefaultIfEmpty()
    .FirstOrDefault()

PS:可以省略DefaultIfEmpty ,因為它后跟FirstOrDefault

您可以使用空條件運算符 ?. 在托管您的日期屬性的對象上:

DateTime? date = ctaMatch.FirstOrDefault()?.CreatedDate;

如果FirstOrDefault()為集合返回null ,則null條件運算符將為CreatedDate屬性返回null

或者,您可以選擇日期並將它們顯式轉換為Nullable<DateTime>

DateTime? date = ctaMatch.Select(d => (DateTime?)d.CreatedDate).FirstOrDefault();

...從而給它一個默認值null

替代語法...拿到First元素,如果Any存在; 否則使用null

DateTime? CreatedDate = ctaMatch.Any() ? ctaMatch.First().CreatedDate : (DateTime?)null;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM