Наиболее эффективный способ получить значение MAX объединенной таблицы в запросе LINQ с использованием C # - PullRequest
1 голос
/ 11 ноября 2011

Я пытаюсь найти наиболее эффективный способ получения самой последней записи в объединенной таблице в LINQ.

Этот запрос может обрабатывать тысячи записей, поэтому я не хотел выполнять подзапрос.

Мне нужно все из элементов, но только самая последняя дата из таблицы «Заметок», имя поля которой - SubmittedDate.

var items = (from t1 in db.Items
                         from t2
                            in db.Notes
                           .Where(o => (t1.Item_ID == o.Item_ID))
                         select new ItemModel
                         {
                             Name = t1.Name,
                             MostRecentUpdate = t2.SubmittedDate <== Need max value in model
                         });

Любая помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 11 ноября 2011

Похоже, вы просто хотите присоединиться к группе:

var items = from t1 in db.Items
            join t2 in db.Notes on t1.Item_ID equals t2.Item_ID into notes
            select new ItemModel
            {
                Name = t1.Name,
                MostRecentUpdate = notes.Max(x => (DateTime?) x.SubmittedDate)
            };

Теперь MostRecentUpdate должно быть нулевым, если в соответствующих строках Notes нет ненулевых дат. По крайней мере, таково было бы поведение LINQ to Objects, поэтому пальцы пересекли абстракцию ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...