d'abord, jetez un oeil à ce filLINQ to DataSet gauche Join, comment le comte nulls
LINQ to Dataset DBNULL problem/null reference exception
Le lien vous donne ci-dessus comment LEFT JOIN et la colonne SELECT qui ont une valeur NULL dans sans prendre une erreur d'exception.
Mon problème est que je veux COUNT la colonne est nulle dans la clause WHERE (après ma LEFT JOIN, une valeur NULL pop-up dans la colonne), quelque chose comme ceci:
int tmp1 =
(
from n in dt_query
join m in dt_query2
on n.Field<string>("VC_CLIENT_MAXID") equals m.Field<string>("VC_CHAT_MAXID") into nm
from m in nm.DefaultIfEmpty()
where
//string.IsNullorEmpty(m.Field<string>("VC_CHAT_STAFF"))
//DBNull.Value.Equals(m.Field<string>("VC_CHAT_STAFF"))
//m.IsNull("VC_CHAT_STAFF")
//object.Equals(m.Field<string>("VC_CHAT_STAFF"), xxx) <<< String xxx = null on above
select n.Field<string>("VC_CLIENT_MAXID")
).Count();
Les lignes commentées sont les J'ai essayé la solution, mais cela n'a pas fonctionné pour moi. Toute aide serait appréciée.
Cela a fonctionné pour moi (cette fois)! Mais j'ai quelque chose à te demander. Que signifie "m == null"? Je pense que filtrer la valeur NULL dans la colonne spécifiée n'a pas fonctionné avec cela (Parce que je ne peux pas dire quelle colonne j'ai vérifié pour NULL de toute façon). Que faire si la table A a VC_CLIENT_MAXID à joindre et VC_CHAT_STAFF à partir de la table B est NULL depuis le début? Je pense que je vais me tromper? –
J'ai renommé m en "LeftJoinM" pour le rendre un peu plus clair. "m == null" ou maintenant "LeftJoinM == null" vérifie essentiellement si la jointure a échoué. Il retourne tous les enregistrements qui n'ont pas pu être joints. –
SELECT COUNT (*) FROM VC_CLIENT LEFT JOIN VC_CHAT ON VC_CLIENT_MAXID = VC_CHAT_MAXID O WH VC_CHAT_STAFF EST NULL > Mon point est "m == null" n'est pas la réponse parfaite pour traduire cette requête. Comme vous pouvez le voir, si VC_CHAT contient des données nulles VC_CHAT_STAFF, je ne peux pas le sélectionner car "m == null" ne peut me fournir que des lignes dont la jointure a échoué. Ai-je raison ? Que traduisez-vous cette requête dans la syntaxe LINQ? parce que je reçois NullException quand j'ai essayé d'appeler "m.Field (" VC_CHAT_STAFF ")" dans la clause WHERE Quoi qu'il en soit, merci beaucoup de votre réponse ci-dessus. Ça m'aide beaucoup! –