在数据库中搜索字符串中的单词

Dan*_*iel 0 c# linq

想象一下,用户输入了一个句子,我需要搜索由输入的句子中的单词组成的主题.这些代码我认为他们可以解决这个问题.

var result = from x in dataBase.tableName 
             select x;

string[] words = enteredString.Split(); 

foreach(string word in words) 
            {
                result = result.Where(x => x.subject.Contains(word));
            }
Run Code Online (Sandbox Code Playgroud)

它只显示句子中最后一个单词的搜索结果,但我认为每次在where行中使用单词时,结果必须缩小.

Pau*_*ips 5

试试这个:

foreach(string word in words) 
{
  var temp = word;
  result = result.Where(x => x.subject.Contains(temp));
}
Run Code Online (Sandbox Code Playgroud)

这被称为(至少由ReSharper)"访问修改后的闭包" - lambda表达式不捕获,它们捕获整个变量.并且变量的值word随循环的每次迭代而变化.因此,由于Where()方法是惰性求值的,word所以在消耗此序列时,值是序列中的最后一个.