我在 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、...?)然后您将知道如何修改查询以获取正确的记录背部。
祝你好运!
如果您的数据库项目实际读取
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()
接近但不完全等于您的数据库记录。使用HtmlEncode()
数字实体而不是字母版本。
但这可能会为您提供有关如何解决问题的线索。我仍然强烈建议不要搜索字符串,而是使用数字 PK 值。我认为这个问题可能很难解决。