我有一个表句子,其中包含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)
从这里开始它非常简单,但这似乎效率低下。
答案 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