首页 > 解决方案 > EF Core 按相关数据对列表进行排序

问题描述

我在 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);

数据库集:

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

一切正常,关系,lazyLoading,......一切。问题是如何按ContentCBlock.DisplayOrder对内容列表进行排序

PS:我不能换班

标签: listsortingasp.net-coreentity-framework-coremany-to-many

解决方案


希望这会帮助你。

_context.Contents.OrderBy(c => c.ContentCBlocks.
             OrderBy(c => c.DisplayOrder).Select(c => c.DisplayOrder).FirstOrDefault());

推荐阅读