我在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();
返回没有这样的项目。我认为这是因为ä。怎么办?
答案 0 :(得分:0)
简化您的查询,然后查看实际返回的内容。
例如,您可以查找包含“ä”的所有记录。如果得到结果,“ä”不是问题。
如果您没有获得结果,您可以查找包含“B& b / v”的所有记录。
无论哪种方式,当你得到一个结果时,看看该结果中的内容及其编码方式(是ASCII,UTF-8,......?)然后你就会知道如何修改你的查询以获得正确的记录。
祝你好运!答案 1 :(得分:0)
如果您的数据库项目实际上是
B & b / v (stärrfood) - 1,0l
而不是
B & b / v (stärrfood) - 1,0l
那么问题很明显;您的数据库中的字符串已被HtmlEncoded。所以实际的问题是如何从第二个字符串到第一个字符串。
通常我会建议:
string encoded = HttpUtility.HtmlEncode("B & b / v (stärrfood) - 1,0l");
// encoded = "B & b / v (stärrfood) - 1,0l"
并搜索编码变量。但是,HtmlEncode()
的结果很接近但不完全等于您的DB记录。 HtmlEncode()
使用数字实体而不是字母版本。
但这可能会为您提供如何解决问题的线索。我仍然强烈建议不要搜索字符串,而是使用数字PK值。我认为这个问题很难解决。