2017-01-11 8 views
1

ユーザが入力した文字に基づいて結果のセットを取り戻したい。エンティティへのLinq - 入力からn個の文字の一致を確認するクエリ

私は、ユーザーが「LH」の文字列を入力し、私は戻って13件の結果

を得るLinqPad LINQpad4

の内側

var PostCodes = (from OA in OrganisationAddresses 
       join OV in OpportunityVersions on OA.ID equals OV.LocationID 
       where OA.CurrentVersion.PostCode.Contains("LH") 
       select OV.ID).ToList(); 

PostCodes.Dump(); 

を私が欲しいものを行い、次のクエリを作成しました

今私のプロダクション環境に非常によく似たクエリを配置すると、 "LH"と入力するとゼロの結果が得られます。完全な文字列は、このような「LH1 1HP」私はエンティティにSQLServer2012とLINQを使用しています

生産

Builder = Builder.And(o => 
(from OA in Context.OrganisationAddresses 
join OV in Context.OpportunityVersions on OA.ID equals OV.LocationID 
where Options.PostCode.Contains(OA.CurrentVersion.PostCode) 
&& OV.ID == o.CurrentVersionID select OV.ID).Any()); 

として入力されたときにのみマッチを返します。私はこれを引き起こした原因と解決方法を知りたい。

おかげ

+1

生産システム?彼らは完全に異種に見えます! –

+0

ああ、はい私の間違い、私はそれを編集しました – HitTheSky

答えて

3

あなたが誤って

Builder = Builder.And(o => 
(from OA in Context.OrganisationAddresses 
join OV in Context.OpportunityVersions on OA.ID equals OV.LocationID 
where OA.CurrentVersion.PostCode.Contains(Options.PostCode) // fix in this string 
&& OV.ID == o.CurrentVersionID select OV.ID).Any()); 

をいくつかのコードをスワップされ、また、あなたがPRODに追加条件を持っているようだ:

あなたLinqPadクエリは、あなたの中のクエリに関連してどのように
&& OV.ID == o.CurrentVersionID 
+0

ありがとう。条件の最後の部分は必要ですが、私は匿名型をチェックしています – HitTheSky

関連する問題