このコンテンツを含むアイテムがdbにあります:
B & b / v (stärrfood) - 1,0l
この:
var item = (from x in db.tblMyTable where x.item_name == "B & b / v (stärrfood) - 1,0l" select x).First();
そのようなアイテムがないことを返します。äのせいだと思います。何をすべきか?
クエリを単純化して、実際に何が返されるかを確認してください。
たとえば、「ä」を含むすべてのレコードを探すことができます。結果が得られれば、「ä」は問題ありません。
結果が得られない場合は、「B & b / v」を含むすべてのレコードを探すことができます。
いずれにせよ、結果が返ってきたら、その結果の内容とエンコード方法 (ASCII、UTF-8、...?) を確認してください。そうすれば、正しいレコードを取得するためにクエリを変更する方法がわかります。戻る。
幸運を!
DBアイテムが実際に読み取る場合
B & b / v (stärrfood) - 1,0l
そしてそうではない
B & b / v (stärrfood) - 1,0l
問題は明らかです。DB 内の文字列は HtmlEncoded されています。したがって、実際の問題は、2 番目の文字列から最初の文字列に移動する方法です。
通常、私はお勧めします:
string encoded = HttpUtility.HtmlEncode("B & b / v (stärrfood) - 1,0l");
// encoded = "B & b / v (stärrfood) - 1,0l"
代わりにエンコードされた変数を検索します。ただし、結果HtmlEncode()
は近いですが、DB レコードと完全に一致しません。はHtmlEncode()
、アルファベット バージョンの代わりに数値エンティティを使用します。
しかし、これは問題を解決する方法についての手がかりを与えるかもしれません。それでも、文字列を検索するのではなく、代わりに数値の PK 値を使用することを強くお勧めします。この問題を解決するのはかなり難しいと思います。