Вы можете попробовать следующий запрос. Также, чтобы сделать его более оптимизированным, вы можете удалить свои нулевые условия, так как внутреннее объединение будет работать, только если обе записи содержат значения
var users = from u in Users
join l in Localities on new { A = u.State, B = u.City}
equals new { A = l.State, B = l.City }
select u
l.State is NULL
и l.city is null
будут по умолчанию исключены из внутренних объединений, так что вы не нужно присоединяться к нулю