ASP.Net 核心 - 在嵌套集合中进行搜索

Posted

技术标签:

【中文标题】ASP.Net 核心 - 在嵌套集合中进行搜索【英文标题】:ASP.Net core - make a search inside a nested collection 【发布时间】:2021-12-18 03:47:03 【问题描述】:

我正在尝试进行嵌套集合搜索,但我真的很挣扎。

我的预期结果是:我想搜索并找到某个日期之前的所有 powerUp 对象。 (PowerUpDate 属性 - 这是搜索条件)

用户模型:

public class AppUser : IdentityUser

    public ICollection<Hero> Heroes  get; set; 

英雄模型:

[Table("Heroes")]
public class Hero

    public int Id  get; set; 

    [Required]
    public string Name  get; set; 

    [Required]
    public string Ability  get; set; 

    [Required]
    public string SuitColors  get; set; 
    public double CurrentPower  get; set; 
    public double StartingPower  get; set; 
    public DateTime Created  get; set;  = DateTime.Now;
    public ICollection<PowerUp> PowerUps  get; set; 
    public AppUser AppUser  get; set; 

    [Required]
    public string AppUserId  get; set; 

加电模型:

[Table("PowerUps")]
public class PowerUp

    public int Id  get; set; 

    [Required]
    public double PowerUpIncrement  get; set; 

    [Required]
    public DateTime PowerUpDate  get; set;  = DateTime.Now;
    public Hero Hero  get; set; 

    [Required]
    public int HeroId  get; set; 

数据上下文:

public class DataContext : IdentityDbContext<AppUser>

    public DataContext(DbContextOptions options) : base(options)
    

    

    protected override void OnModelCreating(ModelBuilder builder)
    
        base.OnModelCreating(builder);

        builder.Entity<Hero>().HasMany(hero => hero.PowerUps).WithOne(powerUp => powerUp.Hero)
            .OnDelete(DeleteBehavior.Cascade);

        builder.Entity<AppUser>().HasMany(user => user.Heroes).WithOne(hero => hero.AppUser)
            .OnDelete(DeleteBehavior.Cascade);

    

有人可以向我解释一下如何在嵌套集合上实现这样的搜索吗?

【问题讨论】:

【参考方案1】:

使用依赖注入注入你的 AppUser user (最好使用存储库模式)无论如何它应该是这样的:user.Heroes.PowerUps.OrderBy(x=&gt;x.PowerUpDate == Datetime.Now).ToList();

x.PowerUpDate == 您将插入的任何日期

【讨论】:

以上是关于ASP.Net 核心 - 在嵌套集合中进行搜索的主要内容,如果未能解决你的问题,请参考以下文章

在asp.net核心的嵌套iframe中动态设置高度

ASP.NET MVC 如何从嵌套对象的视图模型集合中动态创建表结构

使用 LINQ 进行递归控制搜索

使用 LINQ 进行递归控制搜索

通过 ASP.NET MVC 在 C# 视图中遍历匿名对象的嵌套 LINQ 查询

ASP.NET MVC 表单提交多层子级实体集合数据到控制器中