2017-01-03 4 views
-1

データのデータフィールド"8801866968342"が含まれています。エンティティモデルでEntity Framework LINQ条件が文字列に対して機能していない場合

私は、文字列WHERE条件を働いて得ることができますどのようにpublic string Contact { get; set; }

string contact="8801866968342"; 
//following code is not working- 
var bp = db.BP.Where(s => s.Contact == contact).FirstOrDefault(); //bp==null here 

//But this code is working. 
var bp = db.BP.Where(s => s.Id==2).FirstOrDefault(); 

がありますか?

+1

LIKE '%value%'に変換されますs.Contact.Contains("value")を使用しますか?エラー?検索結果はありません?より具体的にする必要があります – BLSully

+0

さて、データベーステーブルの値は正確には "8801866968342"ではありませんが、いくつかの空白または印刷できない文字が含まれています。 2番目の方法(問題の 'Contact'値が入っていると思うレコードのidを使用)を使ってレコードを読み込み、' Contact'プロパティの長さや内容をチェックすることができます。 –

+1

's.Contact.Contains(" value ")'を使うのはどうですか? – sallushan

答えて

0

Equals()を使用してみてください:

var bp = db.BP.Where(s => s.Contact.Equals("8801866968342")).FirstOrDefault(); 

または:

var bp = db.BP.Where(s => string.Equals(s.Contact, "8801866968342", StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); 

また、データベースにあなたのContact分野で使用される照合を確認してください。これは数字の文字列だと思います。

+0

Entity FrameworkがT-SQLに正しく変換するかどうか疑問に思っていますか? – sallushan

+0

そうですが、この場合 '=='は '.Equals'と同じで、' Ordinal'は違いはありません。 –

関連する問題