可能重复:
LINQ:Max还是Default?
我有一些LINQ来过滤DateTime变量.
List<DateTime> lst1 = new List<DateTime>();
//.... add DataTime here
var d = lst1.Where(q => q <= DateTime.Now).Max();
Run Code Online (Sandbox Code Playgroud)
如果我没有匹配项,则会发生异常.
我需要空洞d或至少null,我根本不需要例外.
我该如何解决?
谢谢!
pod*_*ska 74
尝试
var d = lst1.Where(q => q <= DateTime.Now).DefaultIfEmpty().Max();
Run Code Online (Sandbox Code Playgroud)
DateTime.MinValue如果没有匹配项,您的结果现在将包含
小智 5
如果源没有任何元素,Max()会抛出ArgumentNullException.您可以编写一个扩展方法来检查这个并返回null(或任何你想要的)如果没有任何元素.
public static Nullable<DateTime> MaxOrNull(this IEnumerable<DateTime> source)
{
if (source.Count() == 0)
return null;
else
return source.Max();
}
Run Code Online (Sandbox Code Playgroud)