Frage

Ich habe eine Frage diese eine bezogen. Ich will nicht eine Berechnung (Aggregation) tun, aber ich brauche Anzeigewerte von einem Verband zu erhalten. In meinem C # -Code, kann ich den Wert direkt verweisen, da der Fremdschlüssel aus Linq alle notwendigen Verkabelung erzeugen. Als ich die IQueryable als Gridview Datasource-Eigenschaft angeben, und etwas verweisen, das nicht eine Spalte der primären Einheit in der Ergebnismenge ist, bekomme ich einen Fehler, dass die Spalte nicht existiert. Als Neuling zu Linq, ich bin zu raten, die Zuweisung implizit die IQueryable in eine Liste konvertiert, und die Verbände verloren. Meine Frage ist, was ist ein guter Weg, dies zu tun?

Ich gehe davon aus, dass ich um diese durch eine parallele Abfrage Schreiben Rückkehr einen anonymen Typ arbeiten können, die alle Spalten enthält, die ich für die gridview benötigen. Es scheint, dass, indem Sie, dass ich Daten im Speicher halten würde redundant, dass ich schon habe. Kann ich die In-Memory-Datenstrukturen im Fluge abfragen, wenn die Datenquelle zuweisen? Oder gibt es eine direkte Lösung?

Die Gridview sollte den Arzt medizinische Gruppenzugehörigkeiten angezeigt werden, und der Name des Vereins ist in einer Lookup-Tabelle.

            IQueryable<Physician> ph =
                        from phys   in db.Physicians
                        //from name   in phys.PhysicianNames.DefaultIfEmpty()
                        //from lic    in phys.PhysicianLicenseNums.DefaultIfEmpty()
                        //from addr   in phys.PhysicianAddresses.DefaultIfEmpty()
                        //from npi    in phys.PhysicianNPIs.DefaultIfEmpty() 
                        //from assoc  in phys.PhysicianMedGroups.DefaultIfEmpty()
                        where phys.BQID == bqid
                        select phys;


(Quelle: heeroz.com )

So, basierend auf Denis' Antwort, ich entfernte alle nicht benötigte Sachen aus meiner Anfrage. Ich dachte, dass ich vielleicht nicht die richtige Frage stellen zu beginnen.

Wie auch immer, zeigt die Seite eines Daten des Arztes. Ich möchte alle medizinischen Gruppenzugehörigkeiten in einem Raster angezeigt werden (und lassen Sie die Benutzer einfügen, bearbeiten und aktualisieren Zugehörigkeiten). Ich weiß jetzt, dass ich brauche nicht ausdrücklich in anderen Tabellen zu verknüpfen - Linq das macht für mich. Ich kann die Lizenznummer zugreifen, die in einer separaten Tabelle, indem sie sie durch die Kette von Kindern Verbänden verweisen. Ich kann die medizinischen Gruppennamen in der Gridview nicht verweisen, die mich zurück zu meiner Frage bringt:

AffiliationGrid.DataSource = ph.First().PhysicianMedGroups;

Das funktioniert nicht, weil med_group_print_name nicht zugänglich für die Gridview ist:

A field or property with the name 'med_group_print_name' was not found on the
selected data source.

Auch hier Bär mit mir, wenn es allzu offensichtlich ist, dass ich verstehe, Linq nicht ..., weil ich dies nicht tun.

War es hilfreich?

Lösung

Ihre Abfrage scheint seltsam. Sie sollten versuchen, einfach anzuzeigen

ph = from phys in db.Physicians
     where phys.BQID == bqid
     select phys;

in Ihrem Raster. Das sollte funktionieren. Auch, warum die Anrufe zu laden ()? Wenn die Datacontext nicht angeordnet ist, wenn das Gitter verbindlich ist, sollten Sie es nicht benötigen.

Wenn Sie noch Fragen haben, können Sie bitte die Fehlermeldung Sie Beiträge verfassen erhalten, das helfen würde ...

Teil 2

Das Problem ist, dass Sie den Namen haben, ist effektiv nicht in der PhysMedGroup. Sie müssen die MedGroupLookup eine Ebene navigieren Sie den Namen zuzugreifen, da es eine Eigenschaft dieser Klasse ist.

Je nach Technologie Sie verwenden (es scheint entweder WinForms oder Web Forms zu sein), müssen Sie Ihre Datenbindung für den Zugriff auf MedGroupLookup.med_group_print_name konfigurieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top