EF Core Сортировать список по связанным данным - PullRequest
1 голос
/ 18 января 2020

Я реализовал объекты, как показано ниже, в ASP. NET Core 3.1:

public class Content: BaseModel
    {
        public int ContentId { get; set; }
        public virtual List<ContentCBlock> ContentCBlocks { get; set; } = new List<ContentCBlock>();
    }

public class CBlock : BaseModel
    {
        public int CBlockId { get; set; }
        public virtual List<ContentCBlock> ContentCBlocks { get; set; } = new List<ContentCBlock>();
    }

public class ContentCBlock
    {
        [Key]
        public int ContentId { get; set; }
        public virtual Content Content { get; set; }

        [Key]
        public int CBlockId { get; set; }
        public virtual CBlock CBlock { get; set; }

        public int DisplayOrder { get; set; }

    }

и DBContext


            modelBuilder.Entity<ContentCBlock>().HasKey(t => new { t.ContentId, t.CBlockId });

            modelBuilder.Entity<ContentCBlock>()
                .HasOne(c => c.CBlock)
                .WithMany(c => c.ContentCBlocks)
                .HasForeignKey(cc => cc.CBlockId);

            modelBuilder.Entity<ContentCBlock>()
                .HasOne(c => c.Content)
                .WithMany(c => c.ContentCBlocks)
                .HasForeignKey(cc => cc.ContentId);

DBSets:

        public DbSet<ContentCBlock> ContentCBlocks { get; set; }
        public DbSet<Content> Contents { get; set; }
        public DbSet<CBlock> CBlocks { get; set; }

Все отлично работает, отношения, lazyLoading, ... все. Вопрос в том, как я могу отсортировать оглавление по ContentCBlock.DisplayOrder

PS: я не могу изменить классы

1 Ответ

1 голос
/ 18 января 2020

Надеюсь, это поможет вам.

_context.Contents.OrderBy(c => c.ContentCBlocks.
             OrderBy(c => c.DisplayOrder).Select(c => c.DisplayOrder).FirstOrDefault());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...