Linq to SQL выполняет "странное" сравнение, поскольку значения базы данных могут быть NULL
. К сожалению, это не очень хорошо переводит трехзначный результат сравнения. На первый взгляд, я удивляюсь, почему у любых ваших сущностей есть NULL
для их EntityType
. Изменение схемы для запрета значений NULL
было бы самым простым решением.
Однако, если таблица определена таким образом по законным деловым причинам, вы можете обойти ее несколькими способами.
Во-первых, вы можете объединить NULL
s в значение заполнителя.
from x in DataContext.MyEntities
select new
{
IsTypeCDA = (x.EntityType ?? "") == "CDA"
}
Альтернативно, использование String.Equals
создает более тщательное сравнение, которое обрабатывает NULL
s.
from x in DataContext.MyEntities
select new
{
IsTypeCDA = string.Equals(x.EntityType, "CDA")
}
Ни один из них не сгенерирует простой SQL, который вы ожидали, но они оба выполнят свою работу.