0

我在 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();

返回没有这样的项目。我认为这是因为 ä。该怎么办?

4

2 回答 2

0

简化您的查询,然后查看实际返回的内容。

例如,您可能会查找所有包含“ä”的记录。如果你得到结果,“ä”不是问题。

如果您没有得到结果,您可以查找所有包含“B & b / v”的记录。

无论哪种方式,当您返回结果时,请查看该结果中的内容以及它是如何编码的(是 ASCII、UTF-8、...?)然后您将知道如何修改查询以获取正确的记录背部。

祝你好运!

于 2012-11-06T12:53:45.380 回答
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()接近但不完全等于您的数据库记录。使用HtmlEncode()数字实体而不是字母版本。

但这可能会为您提供有关如何解决问题的线索。我仍然强烈建议不要搜索字符串,而是使用数字 PK 值。我认为这个问题可能很难解决。

于 2012-11-06T13:01:24.987 回答