none
Wie übergebe ich Daten aus einer Datenbankabfrage an eine View wenn diese Daten Gruppiert sind? RRS feed

  • Frage

  • Hi,

    ich rufe mittels einer Query Daten von meiner Datenbank ab. Diese Query ist allerdings Gruppiert, wir an "var data" übergeben  und endet mit .ToList() 

    Normalerweise startet meine View dann mit @model IENumerable<Projektname.Models.Tabellenname>

    Hier bekomme ich aber immer die Fehlermeldung, dass eine andere Art von Daten übermittelt wird, als erwartet.

    Wie gehe ich denn dabei vor?

    Wie kann ich eine eigene Klasse mit den benötigten Properties aufbauen und aus der Datenbank mit oben genannter gruppierter Query Daten an diese Klasse übergeben und in der View nutzen?

    Danke schon mal.


    .::datekk::.

    Samstag, 21. September 2019 18:24

Alle Antworten

  • Hallo,

    an ToList kann es nicht liegen. Ich vermute mal das Du mit select nur ein teil der Felder abrufst und ein dynamisches Model erzeugst?


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Montag, 23. September 2019 19:43
  • Moin,

    wenn die daten mit 

    var data = .....ToList();

    abgerufen werden, ligeen sie -logischerweise- erst einmal in data. In deinem (MVC)View greifst du auf ein Model zu (@model), welches dem View bei Aufruf übergeben wird. var data ist aber kein Teil des Models; hierzu müssten die Daten aus data in das Model übergeben werden; im Zweifelsfalle an IEnumerable<...Tabellenname>

    Wo geschieht die Gruppoering? In der Datenbankview? Dann ist das aus sicht deiner Anwendung eh unerheblich und du hast vermutlich eine Entität in etwa wie 'Projektname.Models.MeineGroupView'. Schau di im Zweifel einfach mal an, von welchem Typ deine var data ist.

    Oder geschieht das gruppieren erst im Code? Wenn ja, auf welche Art? Ich habe nachfolgend mal ein einfaches Beipiel in Linqpad gebaut, welche aus einer Liste von 'MyPerson' eine Liste von 'MyGroup' erstellt. Hier könnte dann ein Objekt vom Typ List<MyGroup> an die MVC View übergeben werden:

    public class MyPerson
    {
    	public int PersonId {get;set;}
    	public string Name {get;set;}
    	public DateTime Login { get; set; }
    }
    public class MyGroup
    {
    	public int PersonId { get; set; }
    	public string Name { get; set; }
    	public int Logins { get; set; }
    }
    
    // App Code
    public void Main()
    {
    	var basedata = new List<MyPerson>();
    	basedata.Add(new MyPerson { PersonId = 1, Name = "Arbeiter Eins", Login = DateTime.Now });
    	basedata.Add(new MyPerson { PersonId = 2, Name = "Angestellter Zwei", Login = DateTime.Now });
    	basedata.Add(new MyPerson { PersonId = 3, Name = "Auszubildender Drei", Login = DateTime.Now });
    	basedata.Add(new MyPerson { PersonId = 1, Name = "Arbeiter Eins", Login = DateTime.Now });
    	basedata.Add(new MyPerson { PersonId = 2, Name = "Angestellter Zwei", Login = DateTime.Now });
    	basedata.Add(new MyPerson { PersonId = 1, Name = "Arbeiter Eins", Login = DateTime.Now });
    	
    	var grouped = basedata.GroupBy(i => new {i.PersonId, i.Name}).Select(i => new MyGroup { PersonId = i.Key.PersonId, Name = i.Key.Name, Logins = i.Count()}).ToList();
    	grouped.Dump();
    }

    Dienstag, 24. September 2019 05:53