J'essaie de sélectionner toutes les lignes où la colonne 'Value' est nulle ou un espace. Il est de type nvarchar et est autorisé à être nul.La requête s'exécute comme 1 est égal à 1 au lieu de null check
Lorsqu'elle est exécutée, la requête suivante ne produit pas le bon SQL.
current.Where(
a =>
a.Data.All(ad => ad.AccountTag.Id != currentTag.Item1)
|| a.Data.Any(ad => ad.AccountTag.Id == currentTag.Item1 && string.IsNullOrWhiteSpace(currentTag.Item2)))
La fonction string.IsNullOrWhiteSpace convertit en 1 /* @p3 */ = 1
J'ai essayé d'utiliser la fonction ci-dessus et en utilisant également currentTag.Item2 == null || currentTag.Item2.Equals(string.Empty)
à la fois avec les mêmes résultats.
SQL complet ci-dessous
select data2_.Id from [isnapshot.Client].[dbo].AccountData data2_
where account0_.Id = data2_.ClientAccountId
and data2_.AccountTagId = 1 /* @p2 */
and 1 /* @p3 */ = 1)
C'est seulement quand quelqu'un d'autre regarde votre code que vous réalisez à quel point vous êtes un idiot. 'currentTag.Item2' aurait dû être' ad.Value' Je ne l'aurais jamais remarqué si vous ne l'aviez pas signalé. Merci – JConstantine
@JLevett: Parfois, vous êtes juste aveugle pour les choses les plus évidentes. Cela arrive à tout le monde de temps en temps :-) –