Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać Linq w C# do wybrania określonego ciągu z wielu zagnieżdżonych kolumn?

Po pierwsze, popraw model tak, aby kolekcje miały nazwy w liczbie mnogiej, a obiekty miały pojedynczą, w przeciwnym razie Twój kod będzie bardzo zagmatwany:

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

Teraz dodajmy więcej właściwości do modelu, aby mógł nam powiedzieć o interwencjach:

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


Teraz możesz po prostu zapytać budynek, czy to IsInIntervention, a odpowie tak, jeśli tak jest lub jeśli coś, co jest w jego posiadaniu, jest

Uwaga:jeśli model nie został załadowany encjami, może być konieczne zastosowanie takiej sztuczki:EF Core linq i warunkowe włączanie i włączanie problemu aby je warunkowo załadować



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak przesłać opcję wybraną z rozwijanej listy na stronie jsp, aby wykonać zapytanie mysql

  2. Baza danych w bazie danych (projekt tabeli)

  3. Nie można przetworzyć zapytania MySQL FULL JOIN

  4. Klauzula WHERE daje inny wynik niezależnie od tego, czy w podzapytaniu, czy nie

  5. Jak uzyskać dane z ostatniego tygodnia w MySQL?