基本的に、これは動作します:エンティティへのLinq:パラメータを文字列に渡す方法結合内のメソッドが含まれていますか?
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'~'
(Management Studioで実行したときにどちらのSQLスクリプトが動作)
どのような考えですか?
(UPDATE:私は少数の行で両方の方法で動作しますが、私は1000の以上の行を打ったとき、私はタイムアウト例外を取得することを見てきました)
それはどんな違いがありますか? –
それを定数として宣言すると動作しますが、実行時にその値を変更する必要があります。 – jimmyP
カラムタイプは何ですか? –