首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linq-Sql查询中使用替换方法

在Linq-Sql查询中使用替换方法
EN

Stack Overflow用户
提问于 2010-07-10 05:25:14
回答 2查看 1.9K关注 0票数 1

我使用RegEx删除LINQ查询中的HTML标记,但引发了以下错误:

方法'System.String Replace(System.String, System.String, System.String)'作为SQL不支持执行。

代码语言:javascript
运行
AI代码解释
复制
Help helpDBSession = new Help();
          IEnumerable<Article> articles = null;
          if (lang.ToLower() == "en")
          {
              articles = helpDBSession.Articles.Where(artilce =>  artilce.NameEn.Contains(searchPattern) ||
                       System.Text.RegularExpressions.Regex.Replace(artilce.ContentEn, "<(.|\n)*?>",String.Empty).Contains(searchPattern));
          }
          else
          {
              articles = helpDBSession.Articles.Where(artilce => artilce.NameAr.Contains(searchPattern) ||

                  System.Text.RegularExpressions.Regex.Replace(artilce.ContentAr, "<(.|\n)*?>", String.Empty).Contains(searchPattern));
          }
          if (articles != null && articles.Count() > 0)
          {
              return articles.ToList();
          }
EN

回答 2

Stack Overflow用户

发布于 2010-07-10 05:32:01

这里有两件事不对:

  1. 您正在使用RegEx解析HTML。您应该使用HTML敏捷包来解析HTML,而不是依赖于RegEx。请参阅这里的原因。
  2. 如果Linq2Sql不存在--当使用Replace时,它试图将它传递给Server -这当然会失败,因为SQL没有这个函数。无论如何,这都会失败,因为string.Replace没有重载,需要三个字符串。

您没有解释到底需要实现什么,但是如果需要在SQL中存储一些HTML,我建议您使用敏捷包解析它,并使用它清除标记,然后将结果保存到Server。

票数 2
EN

Stack Overflow用户

发布于 2010-07-10 05:55:33

根据错误消息,我假设LINQ无法翻译LINQ语句的RegEx部分,因为SQLServer不支持RegEx。

你必须:

  • 从数据库中获取文章,其中包含where语句的"Contains“部分。
  • 将结果转换为列表。
  • 将正则表达式应用到列表中的where。

例如:

代码语言:javascript
运行
AI代码解释
复制
Help helpDBSession = new Help();

IEnumerable<Article> articles = null;

if (lang.ToLower() == "en")
{
    articles = helpDBSession.Articles.Where(
                   artilce =>  artilce.NameEn.Contains(searchPattern)
    )
}
else
{
    articles = helpDBSession.Articles.Where(
                   artilce => artilce.NameAr.Contains(searchPattern)
    )
}

if (articles != null && articles.Count() > 0)
{
    if (lang.ToLower() == "en")
    {
        return articles.ToList().Where(
            artilce => System.Text.RegularExpressions.Regex.Replace(
                artilce.ContentEn, 
                "<(.|\n)*?>",String.Empty).Contains(searchPattern)
            )
        );
    }
    else
    {
        return articles.ToList().Where(
            artilce => System.Text.RegularExpressions.Regex.Replace(
                artilce.ContentAr, 
                "<(.|\n)*?>",String.Empty).Contains(searchPattern)
            )
        );
     }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3219349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档