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;

このコードはうまく機能しますが、悲しいことに、両方の単語を含むエントリを選択するのではなく、少なくとも 1 つの単語を含むすべてのエントリを選択します。

なぜだか分かりますか?私はしません : /

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 に答える