Esta consulta parece ser correcta desde el punto de vista del resultado obtenido.
Pero en su consulta interna tis.Where(p => p.PlanProgress != null && p.PlanProgress > 0).Max(w => w.EndDate)
se calcula para cada elemento de colección con t.PlanProgress > 0
Así que es una mejor manera de obtener el valor máximo fuera de una consulta de la siguiente manera:
var max = tis.Where(p => p.PlanProgress != null && p.PlanProgress > 0).Max(w => w.EndDate);
tis.First(t => t.PlanProgress > 0 && t.EndDate == max);
Yendo más lejos p. PlanProgress! = Null es siempre cierto, ya que p.PlanProgress no es de tipo Nullable. Así que nuestro código se convierte de esta manera:
var max = tis.Where(p => p.PlanProgress > 0).Max(w => w.EndDate);
tis.First(t => t.PlanProgress > 0 && t.EndDate == max);
o puede cambiar una definición de la clase y hacer p.PlanProgress de tipo anulable:
public class TaskWeekUI {
public Guid TaskWeekId { get; set; }
public Guid TaskId { get; set; }
public Guid WeekId { get; set; }
public DateTime EndDate { get; set; }
public string PersianEndDate { get; set; }
public double? PlanProgress { get; set; }
public double ActualProgress { get; set; }
}
var max = tis.Where(p => p.PlanProgress.HasValue && p.PlanProgress.Value > 0).Max(w => w.EndDate);
tis.First(t => t.PlanProgress.HasValue && t.PlanProgress.Value > 0 && t.EndDate == max);
discúlpeme, edité y agregué la consulta, lo olvidé. – Shayan
'p => p.PlanProgress! = Null' no es necesario en la cláusula' Where' – fearofawhackplanet
Tnx, pero ¿puedo escribir una consulta para max en dónde condición? – Shayan