需要有效的方法来解决这个问题与Linq /亚音速

时间:2011-03-22 07:46:31

标签: linq subsonic

我有一个表句子,其中包含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)

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

1 个答案:

答案 0 :(得分:0)

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

此外,看起来好像你正在做任何事来获得独特的句子,比如最后使用.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