Ho due tabelle, Table1
e Table2
. Voglio eseguire, per esempio, un join esterno sinistro:Seleziona tutte le colonne dopo JOIN in LINQ
var myOutput = from object1 in Table1
join object2 in Table2
on object1.Property1 equals object2.Property2 into Table3
from output in Table3.DefaultIfEmpty()
select new
{
object1.Property1,
object1.Property2,
//...
output.Property3,
output.Property4,
//...
};
Come si può notare, voglio selezionare tutte le proprietà di entrambi gli oggetti dalla tabella risultante (i enumerables considerati, mentre unendo contengono gli oggetti di taluni tipi - questi sono diversi per entrambe le relazioni). Naturalmente, posso selezionare le proprietà nella selezione anonima, come mostrato nell'esempio.
La mia domanda è come evitare di specificare manualmente tutte le proprietà? Mi piacerebbe avere qualcosa come SELECT * FROM TABLE3
, dove TABLE3
è una relazione risultante (dopo aver aderito TABLE1
e TABLE2
).
Grazie in anticipo per gli indizi.
la prima opzione non utilizza il metodo ToString() durante l'assegnazione? In tal caso otterrò per esempio i valori "Namespace.MyType" nella colonna Object1 dopo aver eseguito myOutput.ToArray() ... – Jamie
No, non invocherà 'ToString()', cosa ti dà l'idea che sarebbe ? Lo stai legando a un controllo dell'interfaccia utente di qualche tipo? Il * control * potrebbe invocare 'ToString()', ma la query stessa è autentica, tt semplicemente usa l'intero oggetto e lo mappa su una proprietà. –
il tuo commento mi ha dato un'idea: ho creato una nuova classe contenente riferimenti per entrambi gli oggetti. Quindi è facile associare a certe proprietà di questi :) – Jamie