LINQ,为实体选择最新输入的子项

时间:2018-04-18 02:54:10

标签: c# linq

我有一个实体作为计划,有多个子计划(子),每个子计划都可以为空。我正在寻找的只是为特定患者检索所有最新输入的儿童计划的有效方法。

task

因此,例如,假设今天是星期五,并且从星期一到星期五有5个患者计划(Id:5),并且每周有一个public class Patient { public virtual int Id { get; set; } public virtual List<Plan> Plans { get; set; } } public class Plan { public virtual int Id { get; set; } public virtual Patient Patient { get; set; } public DateTime Date { get; set; } public virtual PlanDetail PlanChild1 { get; set; } public virtual ObservationCare PlanChild2 { get; set; } } public class PlanDetail { public virtual int Id { get; set; } public virtual Plan Plan { get; set; } public virtual string Description { get; set; } //And other properties.... } public class ObservationCare { public virtual int Id { get; set; } public virtual Plan Plan { get; set; } public virtual string Description { get; set; } //And other properties.... } 和星期四有1 PlanDetail星期一,我希望有一个匿名对象,其中包含最新输入的ObservationCare(在我的示例中将是星期五)和PlanDetail(在我的示例中将是星期四)并跳过其余的

简而言之,我希望从查询中返回一个匿名对象,该查询将每个子项作为其属性之一。

1 个答案:

答案 0 :(得分:0)

试试这个:

var orderedPlans = plans.OrderByDescending(p => p.Id);
dynamic latestAggregatedPlan = new System.Dynamic.ExpandoObject(); //.NET +4.5
latestAggregatedPlan.Detail = plans.FirstOrDefault(p => p.PlanChild1 != null)?.PlanChild1;
latestAggregatedPlan.Observation = plans.FirstOrDefault(p => p.PlanChild2 != null)?.PlanChild2;

希望这就是你要找的东西!