可能重复:
LINQ:最大还是默认?
我有一些 LINQ 来过滤DateTime
变量。
List<DateTime> lst1 = new List<DateTime>();
//.... add DataTime here
var d = lst1.Where(q => q <= DateTime.Now).Max();
如果我没有匹配的项目,则会发生异常。
我需要清空d
,或者至少null
我不需要这里的异常。
我该如何解决?
谢谢!
可能重复:
LINQ:最大还是默认?
我有一些 LINQ 来过滤DateTime
变量。
List<DateTime> lst1 = new List<DateTime>();
//.... add DataTime here
var d = lst1.Where(q => q <= DateTime.Now).Max();
如果我没有匹配的项目,则会发生异常。
我需要清空d
,或者至少null
我不需要这里的异常。
我该如何解决?
谢谢!
尝试
var d = lst1.Where(q => q <= DateTime.Now).DefaultIfEmpty().Max();
DateTime.MinValue
如果没有匹配项,您的结果现在将包含
如果源没有任何元素,Max() 将引发 ArgumentNullException。您可以编写一个扩展方法来检查这一点,如果没有任何元素,则返回 null(或任何您想要的)。
public static Nullable<DateTime> MaxOrNull(this IEnumerable<DateTime> source)
{
if (source.Count() == 0)
return null;
else
return source.Max();
}
我喜欢:
var d = lst1.Where(q => q <= DateTime.Now).OrderByDescending(q => q.DateField).FirstOrDefault();
如果列表为空,这将返回 null。