我正在尝试用linq实现文本搜索 . 我有一个消息表,其中填充了电子邮件数据 . 我希望能够在Messages body中搜索 . 但是,电子邮件正文非常长,我只想显示搜索文本的一小部分,例如,如果我搜索:
aute
在以下文字中:
Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua . Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat . Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur . Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum .
结果应该是:
... alquip ex ea commodo consequat . Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur ....
谢谢
1 回答
这样的事情应该做的工作:
其中messages是您的电子邮件字符串列表,radius是一个int,用于描述您要查找的字符串之前和之后要使用的字符数 . 请注意,此代码仅返回每封电子邮件中的第一个匹配项,而忽略其他电子邮件 .
如果您可以使用辅助函数来计算正确的子字符串,那么一切都会更容易 .
Here你可以找到一个实现string.substring安全版本的扩展方法,使得linq代码上面的hte类似于:
在我看来,这是非常简单的阅读
EDIT
使用以下两种方法扩展字符串:
你可以用一个漂亮的形式得到所有的结果
将查询作为IEnumerable