sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bruger man Linq i C# til at vælge en specifik streng fra flere indlejrede kolonner?

Først skal du rette modellen, så samlinger har flertalsnavne, og objekter har enkelt, ellers vil din kode blive meget forvirret:

building.cs
  public List<Battery> Batteries { get; set; }

battery.cs
  public long BuildingId { get; set; }
  public Building Building { get; set; }
  public List<Column> Columns { get; set; }

column.cs
  public long BatteryId { get; set; }
  public Battery Battery { get; set; }
  public List<Elevator> Elevators { get; set; }

elevator.cs
  public long ColumnId { get; set; }
  public Column Columns { get; set; }

Lad os nu tilføje nogle flere egenskaber til modellen, så den kan fortælle os om indgreb:

building.cs
  public List<Battery> Batteries { get; set; }

  [NotMapped]
  public bool IsInIntervention => this.Status == "Intervention" || Batteries.Any(b => b.IsInIntervention);

battery.cs
  public long BuildingId { get; set; }
  public Building Building { get; set; }
  public List<Column> Columns { get; set; }

  [NotMapped]
  public bool IsInIntervention => this.Status == "Intervention" || Columns.Any(c => c.IsInIntervention);


column.cs
  public long BatteryId { get; set; }
  public Battery Battery { get; set; }
  public List<Elevator> Elevators { get; set; }

  [NotMapped]
  public bool IsInIntervention => this.Status == "Intervention" || Elevators.Any(e => e.IsInIntervention);


elevator.cs
  public long ColumnId { get; set; }
  public Column Column { get; set; }

  [NotMapped]
  public bool IsInIntervention => this.Status == "Intervention";


Nu kan du bare spørge en bygning, om den IsInIntervention, og den vil sige ja, hvis den er det, eller om noget, den ejer, er

Bemærk:hvis modellen ikke er blevet indlæst med entiteter, skal du muligvis bruge et trick som dette:EF Core linq og conditional include and theninclude problem at betinget indlæse dem



  1. Lagring af adgangskoder til MYSQL i PHP-applikation på en sikker måde

  2. PostgreSQL/JDBC og TIMESTAMP vs. TIMESTAMPTZ

  3. Søg mellem dato i forespørgsel viser ikke det korrekte resultat

  4. find antallet af rækker i returneret mysql-resultat (nodejs)