需要使用 Linq/subsonic 的有效方法来解决此问题

发布于 2024-10-24 06:12:06 字数 367 浏览 1 评论 0原文

我有一个 Sentences 表,其中包含 ID 和 Sentence 列。这是一个相当大的表,+/- 100000 行。我得到了一个单词列表,我需要找到包含这些单词的句子。由此产生的句子必须是唯一的。

_session.All<Sentence>()
        .Select(T => new { ID = T.ID, Sentences = T.sentence.Split(' ') })
        .Where(S => S.Sentences.Intersect(Words).Count()>0)
        .Select(R=>R.ID)

从这里开始,它非常简单,但这似乎效率低下。

I have a table Sentences that has an ID and Sentence column. This is a fairly large table, +- 100000 rows. I am given a list of words and I need to find the sentences that contains these words. The resultant sentences must be unique.

_session.All<Sentence>()
        .Select(T => new { ID = T.ID, Sentences = T.sentence.Split(' ') })
        .Where(S => S.Sentences.Intersect(Words).Count()>0)
        .Select(R=>R.ID)

from here it's pretty simple but this seems inefficient.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江湖正好 2024-10-31 06:12:06

您应该使用 .Any(),而不是 .Count()>0

此外,您似乎并没有做任何事情来获得独特的句子,例如在末尾使用 .Distinct()

也许是这样的:

_session.All<Sentence>()
        .Select(T => new { ID = T.ID, Sentences = T.sentence.Split(' ') })
        .Where(S => S.Sentences.Intersect(Words).Any())
        .Select(R=>R.ID)
        .Distinct() // may not be necessary

Instead of .Count()>0 you should use .Any().

Also, it does not appear as though you are doing anything to get unique sentences, like use a .Distinct() at the end.

Maybe like this:

_session.All<Sentence>()
        .Select(T => new { ID = T.ID, Sentences = T.sentence.Split(' ') })
        .Where(S => S.Sentences.Intersect(Words).Any())
        .Select(R=>R.ID)
        .Distinct() // may not be necessary
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文