Я работаю с веб-APi EF Core 6.0.
Npgsql.EntityFrameworkCore.PostgreSQL 6.0.29
PostgreSQL 16.3
У меня есть база данных (Postgres) с музыкальными объектами и уроками. Уроки, связанные с музыкальными объектами по свойству навигации. Я хочу отсортировать музыкальные объекты по дате последнего урока. У меня есть проекция в качестве модели предметной области.
new DomainMusicalEntity
{
Id = entity.Id,
OwnerId = entity.OwnerId,
CreationDate = entity.CreationDate,
Description = entity.Description,
Title = entity.Title,
IsPublic = entity.IsPublic,
IsCompleted = entity.IsCompleted,
YoutubeLink = entity.YoutubeLink,
Author = entity.Author,
UniqueId = entity.UniqueId,
OriginId = entity.OriginId,
DefaultFile = entity.MusicalEntityFiles.FirstOrDefault(x => x.IsDefault == true),
LastLessonDate = entity.MusicalEntitiesToLessons.Select(x=>x.Lesson.Date).FirstOrDefault(),
}
Выполните сортировку в SQL по LINQ to Entities.
MusicalEntitySort.LastLessonDate => filter.SortDirection == SortDirection.Desc
? query.OrderByDescending(x => x.LastLessonDate)
: query.OrderBy(x => x.LastLessonDate),
В SQL у меня есть этот запрос (postgresql):
SELECT t.id, t.owner_id, t.creation_date, t.description, t.title, t.is_public, t.is_completed, t.youtube_link, t.author, t.unique_id, t.origin_id, (
SELECT l0.date
FROM musical_entities_to_lessons AS m2
INNER JOIN lessons AS l0 ON m2.lesson_id = l0.id
WHERE t.id = m2.musical_entity_id
LIMIT 1), t0.id, t0.file_path, t0.is_default, t0.musical_entity_id, t0.original_name
FROM (
SELECT m.id, m.author, m.creation_date, m.description, m.is_completed, m.is_public, m.origin_id, m.owner_id, m.title, m.unique_id, m.youtube_link
FROM musical_entities AS m
WHERE m.owner_id = @__filter_OwnerId_0
LIMIT @__p_2 OFFSET @__p_1
) AS t
LEFT JOIN (
SELECT t1.id, t1.file_path, t1.is_default, t1.musical_entity_id, t1.original_name
FROM (
SELECT m1.id, m1.file_path, m1.is_default, m1.musical_entity_id, m1.original_name, ROW_NUMBER() OVER(PARTITION BY m1.musical_entity_id ORDER BY m1.id) AS row
FROM musical_entity_files AS m1
WHERE m1.is_default = TRUE
) AS t1
WHERE t1.row
Подробнее здесь: https://stackoverflow.com/questions/797 ... or-sorting
C# NET Core LINQ To Entities удваивает подзапрос для сортировки ⇐ C#
Место общения программистов C#
-
Anonymous
1759995365
Anonymous
Я работаю с веб-APi EF Core 6.0.
Npgsql.EntityFrameworkCore.PostgreSQL 6.0.29
PostgreSQL 16.3
У меня есть база данных (Postgres) с музыкальными объектами и уроками. Уроки, связанные с музыкальными объектами по свойству навигации. Я хочу отсортировать музыкальные объекты по дате последнего урока. У меня есть проекция в качестве модели предметной области.
new DomainMusicalEntity
{
Id = entity.Id,
OwnerId = entity.OwnerId,
CreationDate = entity.CreationDate,
Description = entity.Description,
Title = entity.Title,
IsPublic = entity.IsPublic,
IsCompleted = entity.IsCompleted,
YoutubeLink = entity.YoutubeLink,
Author = entity.Author,
UniqueId = entity.UniqueId,
OriginId = entity.OriginId,
DefaultFile = entity.MusicalEntityFiles.FirstOrDefault(x => x.IsDefault == true),
LastLessonDate = entity.MusicalEntitiesToLessons.Select(x=>x.Lesson.Date).FirstOrDefault(),
}
Выполните сортировку в SQL по LINQ to Entities.
MusicalEntitySort.LastLessonDate => filter.SortDirection == SortDirection.Desc
? query.OrderByDescending(x => x.LastLessonDate)
: query.OrderBy(x => x.LastLessonDate),
В SQL у меня есть этот запрос (postgresql):
SELECT t.id, t.owner_id, t.creation_date, t.description, t.title, t.is_public, t.is_completed, t.youtube_link, t.author, t.unique_id, t.origin_id, (
SELECT l0.date
FROM musical_entities_to_lessons AS m2
INNER JOIN lessons AS l0 ON m2.lesson_id = l0.id
WHERE t.id = m2.musical_entity_id
LIMIT 1), t0.id, t0.file_path, t0.is_default, t0.musical_entity_id, t0.original_name
FROM (
SELECT m.id, m.author, m.creation_date, m.description, m.is_completed, m.is_public, m.origin_id, m.owner_id, m.title, m.unique_id, m.youtube_link
FROM musical_entities AS m
WHERE m.owner_id = @__filter_OwnerId_0
LIMIT @__p_2 OFFSET @__p_1
) AS t
LEFT JOIN (
SELECT t1.id, t1.file_path, t1.is_default, t1.musical_entity_id, t1.original_name
FROM (
SELECT m1.id, m1.file_path, m1.is_default, m1.musical_entity_id, m1.original_name, ROW_NUMBER() OVER(PARTITION BY m1.musical_entity_id ORDER BY m1.id) AS row
FROM musical_entity_files AS m1
WHERE m1.is_default = TRUE
) AS t1
WHERE t1.row
Подробнее здесь: [url]https://stackoverflow.com/questions/79785552/c-sharp-net-core-linq-to-entities-doubling-subquery-for-sorting[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия