如何使用FirstOrDefault()方法获取最新记录

时间:2014-01-13 18:03:50

标签: c#-4.0

假设我在数据库中有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();
            }

1 个答案:

答案 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();