我需要Lambda查询来过滤列表中的日期并返回最大日期。如果列表不满足过滤器,则应返回空值。这是我的代码,需要更短的版本 - >
var a = Dates.Where(x => x >= DateTime.Now).Select(x => x);
if(a.Count > 0)
{
return a.Max();
}
else return null;
返回的值是在DateTime中?显示错误的格式"嵌入式语句不能是声明或带标签的语句"。
答案 0 :(得分:1)
var Dates = new List<DateTime>();
DateTime? max = Dates.Where(x => x >= DateTime.Now)
.Select(x => (DateTime?) x)
.DefaultIfEmpty(null)
.Max();
Console.WriteLine(max == null ? "null" : "not null");
如果您的列表由Nullable<DateTime>
组成,则需要以某种方式将结果转换为DateTime
。
编辑:正如评论中提到的@RogerStewart,要执行演员表,您可以使用Cast<DateTime?>()
代替Select语句。