データベースから取得した後、フレーズ内のすべての単語を含むすべての要素を見つけようとしています:
string text = "ab cd 23";//the element prop2 must have all 3 word regardless their order
var q = from c in db.myTable
where c.Prop1 == "value"
select c;
string[] strings = text.Split(' ');
foreach(string word in strings)
{
int cnt = q.Count();//first time cnt = 1500 which is correct
q = q.Where(c => c.Prop2.Contains(word));// Prop2 is a string
cnt = q.Count();//first time cnt = 460
}
これまではすべて問題ありません:
foreach(string word in strings)// second time
{
int cnt = q.Count();//second time cnt = 14 ??
q = q.Where(c => c.Prop2.Contains(word));
cnt = q.Count();//first time cnt = 2
}
2番目のループで何もしないと、要素数がさらに変更されます。これは、すべての単語を含む要素のみを返す必要がありますが、最後の1つだけの要素を返し、3番目のループは役に立たず、何も変更しません
長いQで申し訳ありませんが、linqは初めてです