Dein Problem läßt sich nicht ohne weiteres lösen. Du kannst zwar die beiden Tabellen mit einandere verjoinen, jedoch nicht so wie du das willst.
Hier eine mögliche Lösung deines Problems: Zu erst werden die beiden Tabellen verjoined, und anschließend werden die Wertepare zusammengesetzt damit die Ausgabe, wie du sie wünschst, möglich wird:
public class Tabelle1{ public int Key { get; set; } public string Spalte1 { get; set; } public string Spalte2 { get; set; } public string Spalte3 { get; set; } }
public class Tabelle2{ public int Key { get; set; } public string SORT { get; set; } public string Wertspalte { get; set; } }
Tabelle1 table1 = ...; Tabelle2 table2 = ...;
var innerjoin = From table1 In t1 Join table2 In t2 On t2.Key Equals t1.Ke Select t1.Key, t1.Spalte1, t1.Spalte2, t1.Spalte3, t2.Wert;
Hi, im Prionzip geht das mit einer einzigen SQL Anweisung, wenn die Anzahl der Sort-Werte in Tabelle2 bekannt sind.
Das sieht dann in etwa so aus:
select tab1.*,tab2.sortA, tab2.sortB, tab2.sortC from ( select id, list(case when sort='a' then wert else null end) as sortA, list(case when sort='b' then wert else null end) as sortB, list(case when sort='c' then wert else null end) as sortC from tmp_t2 group by id order by id ) tab2 join tmp_t1 tab1 using(id)
Je nach SQL-Server kann die Anweisung etwas variieren, da der Befehl fürs Concatinieren der Zeilen immer etwas anders heißt. Was benutzt du? Mysql, Postgres, MsSQL?
Würde es auch mit dem Hacken markieren aber die Funktion geht irgendwie aktuell nicht.