「値」列が null または空白であるすべての行を選択しようとしています。これは nvarchar 型で、null が許可されています。
次のクエリを実行すると、正しい 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)))
string.IsNullOrWhiteSpace 関数は次のように変換されます1 /* @p3 */ = 1
上記の関数を使用してみましたが、currentTag.Item2 == null || currentTag.Item2.Equals(string.Empty)
両方を使用しても同じ結果が得られました。
以下の完全なSQL
select data2_.Id from [isnapshot.Client].[dbo].AccountData data2_
where account0_.Id = data2_.ClientAccountId
and data2_.AccountTagId = 1 /* @p2 */
and 1 /* @p3 */ = 1)