假设我在数据库中有2条记录
1)2007-12-10 10:35:31.000 2)2008-12-10 10:35:31.000
FirstOrDefault()方法将按顺序给我第一个记录匹配,如2007-12-10 10:35:31.000,但我需要最新的一个,即2008-12-10 10:35:31.000
if ((from value in _names where value != null select value.ExpiryDate < now).Any())
{
return _names.FirstOrDefault();
}
答案 0 :(得分:0)
您可以使用:
return _names.LastOrDefault();
但是,你只是发送另一个不必要的查询(这也是一个错误的查询)。如果您没有任何记录,则LastOrDefault和FirstOrDefault将返回null。你可以使用这样的东西来改进代码:
var name = _names.LastOrDefault();
if(name != null)
{
return name;
}
// other code here
如果你真的想使用FirstOrDefault,你应该订购降序,如:
var name = _names.Where(n => n.ExpiryDate < now).OrderByDescending(n => n.ExpiryDate).FirstOrDefault();