Подзапрос, чтобы получить максимальное значение в запросе LINQ в C # - PullRequest
1 голос
/ 21 октября 2011

Я пытаюсь создать подзапрос для получения самой последней даты из таблицы, не связанной с остальной частью запроса.

Мой запрос ниже. Я хотел бы выбрать наивысшую дату в вложенной таблице в качестве значения и спроецировать ее на мою модель ниже.

Моя другая вкладка имеет значение Обратная связь и содержит значение даты и поле имени пользователя

return (from t1 in db.TaskAppointmentOpens

                from t2 in db.Tasks.Where(t => (t.Task_ID == t1.Parent_Task_ID))

                from t3 in db.UserNames.Where(t => (t.User_Username == t2.OwnerTypeItem_ID))

                where ((t2.Item_ID > 0) && (t2.Type_ID > 0) && (t2.Creator == user) && (t1.AppointmentEnd < DateTime.Now) && (t1.AppointmentStart > EntityFunctions.AddMonths(DateTime.Now, -6)) && (from i in db.AppointmentFeedbacks where i.AppointmentId == t1.ID select i).Count() == 0)

                group new {t2, t3} by new { 
                  t2.OwnerTypeItem_ID, t3.Name
                } into g

                let oldestAppointment = g.Min(uh => uh.t2.Due_Date)

                    select new TelesalesNeglectedFeedbackModel
                    {
                        UserFullName = g.Key.Name,
                        QtyOutstanding = g.Select(x => x.t2.Task_ID).Distinct().Count(),
                        OldestAppointment = oldestAppointment
                        LastDateInOtherTable = HERE <======
                    }).Take(5).ToList();

1 Ответ

1 голос
/ 21 октября 2011

Вы должны иметь доступ к таблице и полю следующим образом:

LastDateInOtherTable = db.Feedback.Max(f => f.Date)

Или используйте предложение let, как вы сделали для другого столбца, а затем назначьте его позже:

let lastDate = db.Feedback.Max(f => f.Date)
...
LastDateInOtherTable = lastDate
...