Appréciez si je peux obtenir de l'aide pour écrire un LINQ qui obtiendra TOUS LES CHAMPS du tableau A, et les champs pour lesquels le profil 1 a une valeur dans le tableau AB, montrer la valeur, sinon Si le profil 1 n'a pas d'entrée dans la table AB, affichez la valeur comme nulle.Comment écrire ce qui suit dans Linq ou Sql
Tableau A
AID Field
-----------
1 OneField
2 TwoField
3 ThreeField
Tableau B
BID Value
-----------
1 OneValue
2 TwoValue
3 ThreeValue
Tableau AB
ABID AID BID ProfileId
-------------------------
1 1 1 1
2 2 3 1
Je suis en train d'écrire un Linq (ou requête SQL) qui me montrer pour le profil id 1, toutes les valeurs de la table a, et pour celles qui s'appliquent, la valeur de la table b.
par exemple.
ProfileID AID Field BID Value
--------------------------------------------------------
1 1 OneField 1 OneValue
1 2 TwoField 3 ThreeValue
1 3 ThreeField NULL NULL
Comme vous pouvez le voir, le but est d'obtenir tous les champs de la table A, et les domaines pour lesquels le profil 1 a une entrée dans le tableau AB, montrer la valeur de la table B, sinon si le profil 1 n'a pas entrée dans la table AB, puis montrer comme nulle.
Si la solution l'exige, je suis heureux d'écrire cela en sql et de l'appeler via proc stocké.
Merci
Salut Roberto. Merci pour cela, ça marche plutôt bien dans le test unitaire. Cependant, par rapport aux entités linq2sql, DefaultIfEmpty échoue car les valeurs passées dans la valeur par défaut si elles sont vides ont des contraintes fk sur elles et j'obtiens l'exception "System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException: Opération non valide en raison de l'état actuel de l'objet". Bummer. Je vais continuer à essayer et poster quand je trouve une solution. merci. –
putain ... si proche. Malheureusement, je n'utilise pas LINQ to SQL, donc je ne connais pas ses limites. Malheureusement si vous renvoyez null pour DefaultIfEmpty alors le reste de la requête échouera parce qu'il essaye d'accéder aux propriétés sur cet objet retourné .... – 7wp
Merci Roberto. Cela m'a orienté dans la bonne direction. Je continuerais d'essayer. marquer le vôtre comme la réponse acceptée pour sa rigueur. +1 pour faire un test complet autonome. –