1

我正在使用 linq to sql 开发一个(快速而肮脏的)搜索引擎。我已经有一个字符串表,其中包含我想在每个条目的描述中搜索的每个单词。

在我的 linq to sql 进程结束时,我应该只获取包含表中所有单词的条目。这是我到目前为止的代码(m1是我的字符串表):

var myUser = from u in dataBase.Profiles
             where u.Status == 2 // some primary selection
             select u;
foreach (string word in m1)
{
  myUser = from u in myUser
           where ((word != "") ? u.Description.Contains(word) : 1 == 1)
           select u;
}
myUser = from u in myUser
         orderby u.ModificationDate descending // finally, we order the list
         select u;

此代码运行良好,但遗憾的是,它不会选择包含两个单词的条目,而是选择包含至少一个单词的所有条目。

你能明白为什么吗?我不 : /

4

1 回答 1

1

您正在关闭循环变量

闭包关闭变量,而不是值。

尝试将字符串分配给局部变量:

foreach (string word2 in m1)
{
    string word = word2;
    myUser = from u in myUser
           where ((word != "") ? u.Description.Contains(word) : 1 == 1)
           select u;
}
于 2012-12-19T11:56:10.717 回答