当前位置: 首页 > 知识库问答 >
问题:

Linq搜索-显示搜索文本的一小部分

赏开宇
2023-03-14

我试图实现与linq文本搜索。我有一个用电子邮件数据填充的消息表。我想能够在消息体中搜索。然而,电子邮件正文很长,我想只显示搜索文本的一小部分,例如,如果我搜索:

奥特

在以下案文中:

知识产权是一种权利,是一种精英的权利,是劳动和财富的暂时性权利。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡。

结果应该是:

...我是一个普通的消费者。两人或两人在一起,因为他们在一起,因为他们在一起,因为他们在一起。。。。

谢谢

共有1个答案

施锋
2023-03-14

像这样的东西应该可以完成这项工作:

var query = from str in messages
  let index = str.IndexOf(search)
  where index > -1
  select str.Substring(Math.Max(0, index - radius), radius + Math.Min(radius, str.Length - index));

其中messages是您的电子邮件字符串列表,radius是一个int,它描述了您要在要查找的字符串前后输入的字符数。请注意,此代码将只返回每个电子邮件中的第一个匹配项,而忽略其他匹配项。

如果您可以使用helper函数来计算适当的子字符串tho,那么一切都会变得更容易。

在这里,您可以找到一个扩展方法,它实现了字符串的安全版本。子字符串,使上面的linq代码看起来像:

var query = from str in lst
  let index = str.IndexOf(search)
  where index > -1
  select str.SafeSubstring(index - radius, 2*radius);

在我看来,这本书读起来很简单

编辑

使用以下两种方法扩展字符串:

    public static List<int> IndexOfAll(this String str, string search)
    {
        List<int> lst = new List<int>();
        foreach (Match match in Regex.Matches(str,search))
        {
            lst.Add(match.Index);
        }
        return lst;
    }

    public static string SafeSubstring(this String str, int start, int n)
    {
        return str.Substring(Math.Max(start, 0), Math.Min(n, str.Length - start));
    }

您可以使用

var query = from str in lst
  let index = str.IndexOfAll(search)
  where index.Count>0
  select index.Select(x => str.SafeSubstring(x-radius, 2*radius));

将查询作为IEnumerable

 类似资料:
  • 问题内容: 我有很多小文本(说大约500个单词)和两个数据库,每个数据库大约有10.000个条目(关键字)。 现在,我想处理每个文本,并找出文本中包含哪些关键字(保存在2个数据库中的关键字)。 你们中的某人是否有有效地做到这一点的好方法? 我想对每个文本进行处理并对其进行索引(也许使用lucene),然后再针对它搜索数据库,但是我真的不知道lucene是否是正确的工具。 问题答案: Lucene正

  • 带有Mongoose的MongoDB(3.2.0) 收藏: 用户 null 查询: =>找到 =>找到(搜索大小写敏感为false) =>找到(使用diacriticSensitive搜索为false) =>找到(部分搜索) =>未找到(部分搜索) =>未找到(部分搜索) 你知道为什么我用查询“Leo”或“L”得到0个结果吗? null

  • 问题内容: 当前,我正在使用Lucene 3.0.2版创建类似于字典的搜索应用程序。我要显示的对象之一是一种“示例”,其中Lucene将在书中寻找一个单词,然后显示使用该单词的句子。 我一直在阅读《 Lucene in Action》一书,其中提到了类似的内容,但通过浏览我找不到其他提及。这是Lucene可以做的吗?如果是,您该怎么办? 问题答案: 我相信您正在寻找的是荧光笔。 一种可能是使用lu

  • 我正在编写一种方法来搜索列表形式的文字文件,搜索用户输入的文字,但如果找到一个字母,程序将返回一个肯定的结果。例如,如果我搜索“f”,当没有单词时,它将返回字典中有一个单词“f”

  • 输入出发地和抵达地,可搜索前往目的地的路径。 轻触(选项)>[搜索路径],在出发地与抵达地的字段各自输入关键词并轻触[搜索]。地图会显示最短路径。 可从书签中选择出发地及抵达地。请轻触(书签),选择地点。 A ) (徒步)/(乘车) 可选择路径的移动方式。轻触即会以选择的移动方式搜索最短路径。 B ) 与目的地间的距离及所需时间 C ) (显示列表)/(隐藏列表) 轻触即可将搜索结果列表切换为显示

  • 想搜索地点时可输入相关的关键词或住址来搜索地点。 轻触(选项)>[搜索地点],在搜索栏输入关键词后轻触[搜索]。搜索结果会在地图上以(地点旗帜)显示。 查看搜索结果列表 显示地点旗帜时,可查看搜索结果列表。 1. 显示地图的状态下轻触屏幕。 2. 轻触(显示列表)。 画面会显示搜索结果列表。轻触想显示的地点即会显示地图。