C# 从搜索中删除字符并返回包含该字符的正确项

C# 从搜索中删除字符并返回包含该字符的正确项,c#,sql,entity-framework,C#,Sql,Entity Framework,在搜索了一段时间之后,我决定发帖子,希望有人能帮助我找到正确的方向 我试图找出一种方法,在从搜索查询中删除包含连字符的结果时返回该结果。某些项目可能返回多个催眠 即 搜索 02050407 将返回正确的项目 -02055-0407 -02055-0407-1 每个项目都有连字符,这是没有模式的,所以我需要能够从搜索查询中的任何位置删除它 我试过几种不同的方法,但都没有成功 示例: results = (from x in results where x.item.Repla

在搜索了一段时间之后,我决定发帖子,希望有人能帮助我找到正确的方向

我试图找出一种方法,在从搜索查询中删除包含连字符的结果时返回该结果。某些项目可能返回多个催眠

搜索
02050407

将返回正确的项目
-02055-0407
-02055-0407-1

每个项目都有连字符,这是没有模式的,所以我需要能够从搜索查询中的任何位置删除它

我试过几种不同的方法,但都没有成功

示例:

results = (from x in results
           where x.item.Replace("-", "").Contains(NumberSearch)
           select x);
---或---

---或---

除其他外


任何帮助都将不胜感激。

你很接近。这应该起作用:

results = results.Where(x => x.item.Replace("-", "").Contains(NumberSearch)).ToList();

我将执行results.ToList()来获取客户端的所有内容,然后对列表尝试相同的linq查询。如果你什么都没有得到,那就不能归咎于生成的SQL。当从源数据搜索时删除连字符时,你可能在构建非常缓慢的东西。如果您希望使用快速(er)搜索来轻松地存储数据的一个版本,并且在数据存储中不使用连字符,并通过该列进行搜索。@Ralf存储这些项目的正确方法是使用连字符。我只想能够搜索没有连字符,如果需要的话。我正在使用的数据库是只读的,其中包含100000项,因此我无法直接编辑数据源。我建议存储两个版本,一个带有连字符,另一个不带连字符,但不替换当前列中的当前数据。任何在搜索时删除数据中连字符的版本都会使该列上的索引对搜索无效。意味着它会很慢。
var result = (from x in results
              where SqlMethods.Like(x.item, NumberSearch)
              select x)

results = results.Where(x => x.item.Replace("-", "").Contains(NumberSearch)).ToList();