2017-12-20 9 views
0

Ich habe Tabellen arAbonamenty und arKlienci. Jeder Gegenstand in arAbonamnety ist mit arKlienci verbunden.Wie bekomme ich Werte aus verknüpften Tabellen mit Gruppierungsschlüssel

Bitte schauen Sie auf den Code unten. Mit ersten temp_query Ich kann Werte aus der zweiten Tabelle (siehe arKlienci), aber wenn ich Gruppenbogen in arAbonamenty ich nicht

um Elemente aus arKlienci beziehen
var temp_query = from myAbonamenty in myNexo_ARWALEntities.ArAbonamenty 
      where (myAbonamenty.czy_fa_auto_na_początku_miesiąca == true) 
      select new 
      { 
       klientId=myAbonamenty.id_klient, 
       klientId_nabywca = myAbonamenty.ArKlienci.Nexo_klient_nabywca, 
       klientId_odbiorca = myAbonamenty.ArKlienci.Nexo_klient_odbiorca 
      }; 



var query = from myAbonamenty in myNexo_ARWALEntities.ArAbonamenty 
      where (myAbonamenty.czy_fa_auto_na_początku_miesiąca == true) 
      group myAbonamenty by myAbonamenty.id_klient into myAboGrupowane 
      select new 
      { 
       klientId = myAboGrupowane.Key, 
       abonament = myAboGrupowane 
      }; 

foreach (var AboGrupowane in query) 
{ 
    Console.WriteLine(AboGrupowane.klientId); 
    /// here I want to refer to klientID_nabywca and klientId_odbiorca 
    foreach (var myAbonamenty in AboGrupowane.abonament) 
    { 
     Console.WriteLine(myAbonamenty.Asortymenty.Id); 
    } 
} 

Ich möchte diesen Artikel verweisen, wo ich Kommentar gesetzt haben.

Antwort

0

Unter der Annahme, dass das gleiche klientId den gleichen ArKlienci Link bedeutet, Sie müssen nur eines der Gruppe zuzugreifen:

var query = from myAbonamenty in myNexo_ARWALEntities.ArAbonamenty 
      where (myAbonamenty.czy_fa_auto_na_początku_miesiąca == true) 
      group myAbonamenty by myAbonamenty.id_klient into myAboGrupowane 
      let arKlienci = myAboGrupowane.First() 
      select new 
      { 
       klientId = myAboGrupowane.Key, 
       abonament = myAboGrupowane, 
       klientId_nabywca = arKlienci.Nexo_klient_nabywca, 
       klientId_odbiorca = arKlienci.Nexo_klient_odbiorca     
      }; 

Ich benutzen letFirst zweimal Aufruf zu vermeiden.

+0

Danke, Ihr Code hat mir geholfen, eine Lösung zu finden (aber es hat nicht funktioniert). – Jacek

+0

Was hat nicht funktioniert? Ich sehe nicht, warum Sie 'FirstOrDefault()' brauchen, da es nicht möglich sein sollte, eine leere Gruppe von 'group ... by' zu haben. – NetMage

+0

klientId_nabywca = arKlienci.Nexo_klient_nabywca hat nicht funktioniert, ich ändere es in klientId_nabywca = myAboFirst.ArKlienci.Nexo_klient_nabywca, das gleiche mit odbiorca – Jacek

0

vorherige Antwort hat mir geholfen, eine Lösung zu finden:

var query = from myAbonamenty in myNexo_ARWALEntities.ArAbonamenty 
      where (myAbonamenty.czy_fa_auto_na_początku_miesiąca == true) 
      group myAbonamenty by myAbonamenty.id_klient into myAboGrupowane 
      let myAboFirst = myAboGrupowane.FirstOrDefault() 
      select new 
      { 
       klientId = myAboGrupowane.Key, 
       klientId_nabywca = myAboFirst.ArKlienci.Nexo_klient_nabywca, 
       klientId_odbiorca = myAboFirst.ArKlienci.Nexo_klient_odbiorca, 
       abonament = myAboGrupowane 
      }; 

foreach (var AboGrupowane in query) 
{ 
    Console.WriteLine(AboGrupowane.klientId); 
    Console.WriteLine(AboGrupowane.klientId_nabywca); 
    foreach (var myAbonamenty in AboGrupowane.abonament) 
    { 
     Console.WriteLine(myAbonamenty.Asortymenty.Id); 
    } 
} 
Verwandte Themen