我有一张人和他们的工作经历。每个人都可以有很多经历。我想只从这个表中获得经验月份在特定filter.Position_ID中的总和超过我提供的值的那些人。
经验开始日期和结束日期也是职称。
码:
result = result
.Where(w => w.CommonFields.Status == RecordStatusType.Active
&& w.Experiences.Sum(sum => SqlFunctions.DateDiff("month", sum.BeginDate, sum.EndDate ?? DateTime.Now))
>= filter.WorkExperiency
&& filter.Position_ID.Any(p => p.Equals(w.Experiences.Where(x => p.Equals(x.Position_ID)))));
filter.Position_ID是我提供的位置。结果是所有申请人。问题是平等的。它不起作用... filter.Position_ID是列表我想找到这些元素中的任何一个==申请人的经验。
result = result
.Where(w => w.CommonFields.Status == RecordStatusType.Active
&& filter.Position_ID.Any(p => w.Experiences.Any(e => e.Position_ID == p))
&& w.Experiences.Sum(sum => SqlFunctions.DateDiff("month", sum.BeginDate, sum.EndDate ?? DateTime.Now))
>= filter.WorkExperiency);
这解决了我的问题。