У вас есть две проблемы. Это:
uid.ToLower()
... не может быть преобразовано в SQL. Это:
where map.shortID.ToLower() == userID.ToLower()
Это неправильный способ сделать нечувствительным к регистру ограничение. Он побеждает, используя индекс, и вызывает проблему, на которую вы ссылаетесь. Вместо этого выполните:
where map.shortID.Equals(userID, StringComparison.OrdinalIgnoreCase) // or whatever...
Второй вопрос: вы, кажется, пытаетесь сделать «где в». Но это неправильный путь. В EF 4 вы делаете:
where distinctUserIDs.Contains(ad.ShortUserID)
В EF 1 он более вовлечен .