在linq中选择两列之间的最大值

Bab*_*edi 3 c# linq asp.net

我在产品表中有dateSend Column和dateEdit Column,我可以使用以下代码选择max dateSend:

(from pro in Products.ToList()
select new { pro.DateSend }).Max();
Run Code Online (Sandbox Code Playgroud)

但我在dateSend和dateEdit之间有最大值,请帮帮我.

Aus*_*nen 7

(from pro in Products.ToList()
let max = Max(pro.DateSend, pro.DateEdit)
select max).Max()


static DateTime? Max(DateTime? a, DateTime? b)
{
    if (!a.HasValue && !b.HasValue) return a;  // doesn't matter

    if (!a.HasValue) return b;  
    if (!b.HasValue) return a;

    return a.Value > b.Value ? a : b;
}
Run Code Online (Sandbox Code Playgroud)


D S*_*ley 7

如果你不反对放弃查询语法,那么更简单:

DateTime max = Products.Max(p=>p.DateSend > p.DateEdit ? p.DateSend : p.DateEdit);
Run Code Online (Sandbox Code Playgroud)