私のDBにはこのフィールドがあります:mySerial Double?
私はMulticritera Searchを持っており、このフィールドを検索する必要があります。
ユーザーは、このフィールドを検索して、開始、終了、または必要なものを入力します。Linq Double contains
だから私はこれをしなかった:
results.Where(x => x.mySerial.ToString().Contains(TextBox_mySerial.Text)) ;
私が検索: "88890"
は、私が持っている必要があります:888900、888901、888903、結果として888908、888909。
しかし、私は取得のみ :888889
は、LINQのは.ToString().Contains
私にを回す:
WHERE CONVERT(NVARCHAR(30), [t0].[mySerial], 2) LIKE '%88890%'
しかし、私が欲しいのです:
WHERE [mySerial] LIKE '%88890%'
はのLINQでこれを達成または実行する方法はあります私は012archをvarcharに私の視点でキャストする必要がありますか?
私は驚くことではありません。私はいつも、私のように.ToString()を使って地獄に特別な場所があると思った。intまたはdoubleにContains()を含める。 –
クエリを実行してCONVERT(NVARCHAR(30)、[mySerial]、2)を選択すると、どのような結果が得られますか?ドキュメントによると、2のスタイルは科学的な表記法を提供するので、それがあなたを台無しにするかもしれないかと思います。 'SELECT CONVERT(NVARCHAR(30)、CAST(888889 AS FLOAT)、2)'を試したところ、結果は8.888890000000000e + 005でした。だから、最初に 'int'にキャストしようとしますか? – juharr
これがうまくいくかどうかは不明ですが、 '((string)x.mySerial).Contains(TextBox_mySerial.Text)'を試してみたらどうなりますか? – juharr