此处查找最大值和最小值日我从日期查找max
和min
,应该同时考虑StartDate
和EndDate
并从中获得max
和min
日期。看下面的代码,有没有更好的方式来使用LINQ来做这件事。从不同的属性
public partial class Process
{
public System.DateTime StartDate { get; set; }
public Nullable<System.DateTime> EndDate { get; set; }
}
class Program
{
static void Main(string[] args)
{
var processes = new List<Process>();
var year = DateTime.Now.Year;
var month = DateTime.Now.Month;
processes.Add(new Process() { StartDate = new DateTime(year, month, 1),
EndDate = new DateTime(year, month, 22) });
processes.Add(new Process() { StartDate = new DateTime(year, month, 14),
EndDate = new DateTime(year, month, 23) });
processes.Add(new Process() { StartDate = new DateTime(year, month, 19),
EndDate = new DateTime(year, month, 31) });
processes.Add(new Process() { StartDate = new DateTime(year, month, 27),
EndDate = new DateTime(year, month, 12) });
processes.Add(new Process() { StartDate = new DateTime(year, month, 30),
EndDate = new DateTime(year, month, 2) });
var smax = processes.Max(p => p.StartDate) ;
var emax = processes.Max(p => p.EndDate);
var smin = processes.Min(p => p.StartDate);
var emin = processes.Min(p => p.EndDate);
var max = smax > emax ? smax : emax;
var min = smin < emin ? smin : emin;
}
尝试'Math.Min'和'Math.Max',但它不处理'DateTime'。请参阅https://msdn.microsoft.com/en-us/library/system.math.min(v=vs.110).aspx – Stefan
使用框架使用的类名称不是一个好主意,例如' Process'。现在可能会好起来,但可能会回来咬你。 – HebeleHododo
我认为你需要的不仅仅是最大分钟数,就像一个扩展来查找日期是否重叠,如果日期是有效的(例如,开始日期更少棕褐色endate等),然后在单个linq中获得最大值。你可以从[[link(] http://blog.reneorban.com/2013/01/generic-method-to-check-if-dates-or.html)]([link(] http:/ /blog.reneorban.com/2013/01/generic-method-to-check-if-dates-or.html)),并且恰到好处地将自己的最小值放在最上面 –