0
Bonjour, je dois joindre deux tables (MainTransaction et SubTransaction), le problème ici est que je veux aussi obtenir tous les enregistrements de Maintransaction qui ne sont pas dans la Subtransaction, je suis coincé dans cette partie, comment Je réalise ceci?Syntaxe Linq joindre et groupe
protected object SelectMainTbl()
{
var mainIdAndSum = from st in t.subtransaction
group st by st.MainTransactionId into g
select new
{
Sum = (from r in g
select r.Amount).Sum(),
MainId = g.Key
};
var mainTbl = from main in t.maintransaction
join sub in mainIdAndSum on main.MainTransactionId equals sub.MainId
where main.IsEnabled == true && (sub.Sum - main.Amount != 0)
select main;
return mainTbl;
}
Salut Merci pour votre réponse, Cependant, ce que je veux réaliser est comme SQL jointure gauche. Le résultat doit retourner tout l'enregistrement de la table Maintransaction même si la table SubTransaction n'a pas encore le maintransactionId inséré, et les colonnes de la table de sous-transaction seront remplies comme nulles dans le résultat. SELECT * FROM maintransaction m Sous-transaction LEFT JOIN m ONMainTransactionId = s.MainTransactionId – William
@ user660810 - Oui, c'est ce que fait ma requête. Le 'en sts 'fait cela. S'il n'y a pas de sous-transactions associées, 'sts' sera une liste vide et vous aurez toujours la transaction principale retournée par la requête. – Enigmativity
J'ai rencontré un problème similaire et 'into 'ne peut être utilisé qu'avec' group join'. Comme je le comprends, 'join' est corrélé à sql inner join et' group join' correspond à sql left join, à peu près. – pseudocoder