此處查找最大值和最小值日我從日期查找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)),並且恰到好處地將自己的最小值放在最上面 –