sql >> Databáze >  >> RDS >> Mysql

Jak použít Linq v C# k výběru konkrétního řetězce z více vnořených sloupců?

Nejprve prosím opravte model tak, aby kolekce měly názvy v množném čísle a objekty single, jinak bude váš kód velmi zmatený:

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; }

Nyní do modelu přidáme nějaké další vlastnosti, aby nám mohl říci o intervencích:

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";


Nyní se můžete jen zeptat budovy, zda je IsInIntervention, a ona odpoví, že ano, nebo pokud něco, co vlastní, je

Poznámka:Pokud model nebyl načten entitami, možná budete muset použít trik, jako je tento:EF Core linq and conditional include and theninclude problem podmínečně je načíst



  1. Rozdělte slova velkým písmenem v sql

  2. GROUP BY lname ORDER BY zobrazuje špatné výsledky

  3. php mysql třídí výsledky podle pořadí načtení

  4. Jak přeruším dlouhý dotaz v nástroji příkazového řádku mysql bez ukončení mysql?