我有一個非常簡單的實體,它具有可爲空的DateTime屬性的列表。 例如如何返回與謂詞相匹配的第一個項目,或者如果沒有匹配項目,則返回第一個項目?
class MyEntity
{
int Id{ get;set; }
string Category { get; set; }
DateTime? Date{ get; set ; }
}
var myentities = new List<MyEntity>(..);
我想返回列表中的First()
項,其中要麼的日期是「最老」,或者大部分在過去,或最接近DateTime.Min,任何你想要的方式來字它,或如果有沒有日期設置,那麼得到第一個項目。
這可以用兩個語句來完成:
var myEntity = myentities
.Where(me => me.Date != null)
.OrderBy(me => me.Date)
.FirstOrDefault();
if (myEntity == null)
myEntity = myentities.First();
但是,有沒有辦法在一個單獨的語句來做到這一點?
在你exampel我無法找到可爲空的DateTime屬性 – sll
那只有快僞代碼給實體的想法,而不必給它的所有寫出來的。編輯以顯示「DateTime?Date」 – BlueChippy
'myentities.Where(me => me.Date!= null).OrderBy(me => me.Date).FirstOrDefault()?? myentities.First()'沒有單一的聲明,但單行:D – Stefan