В основном это работает:
from membershipUser in context.MembershipUsers
join user in context.Users on membershipUser.UserName equals (user.UserName.Contains("partner:") ? user.UserName.Replace("partner:", "") : user.UserName)
Но это не так:
var usernamePrefix = "partner:";
...
from membershipUser in context.MembershipUsers
join user in context.Users on membershipUser.UserName equals (user.UserName.Contains(usernamePrefix) ? user.UserName.Replace(usernamePrefix, "") : user.UserName
Я получаю исключение тайм-аута.
Единственное отличие в сгенерированных сценариях SQL заключается в том, что первый из них отображает:
LIKE N'%partner:%'
В то время как последний делает:
LIKE '%partner:%' /* @p__linq__3 */ ESCAPE N'~'
(Оба сценария SQL работают при запуске в Management Studio)
Есть мысли?
(ОБНОВЛЕНИЕ: я видел, что с небольшим количеством строк оба способа работают, но когда я нажимаю более 1000 строк, я получаю исключение тайм-аута)