我希望有人可以帮忙 我正在使用实体框架6在c#中工作
我需要搜索" DESCRIPTION"我的桌子领域"产品"文本框的值,但文本按任意顺序分开,我可以用我的代码更好地解释:
string[] palabras = textBox1.Text.Split(' ');
string palabraABuscar = "";
for (int i = 0; i <= palabras.Length - 1; i++)
{
palabraABuscar = palabras[i];
query = query.Where(a => a.DESCRIPCION.Contains(palabraABuscar));
}
这个想法是用户输入&#34; lala1 lala2&#34;程序过滤包含这两个单词的所有产品,例如:
该程序必须显示产品&#34; CAMERA lala2与lala1&#34;和&#34; lala1 BOX lala2&#34; 该程序不得显示&#34;计算机lala1&#34;要么&#34;淋浴lala2&#34;
使用我的代码,程序只按最后一个字过滤产品(&#34; lala&#34;),也许替换第一个,我使用一个用于cicle,因为我不知道有多少
答案 0 :(得分:3)
您的电流代码应该按预期工作,因为Where
方法会使用and
添加每个查询。或者您可以尝试其他选项(@Ghasan也在评论中说明):
string[] palabras = textBox1.Text.Split(' ');
query = query.Where(a => palabras.All(p => a.DESCRIPCION.Contains(p)));
如果您当前的代码也不适合您,请检查您是否正确分割数据并确保query
正确无误,直到您达到上述代码为止。此外,您可以检查生成的SQL查询,如:
context.Database.Log = Console.WriteLine; // Or something similar.
答案 1 :(得分:1)
只需替换
query = query.Where(a => a.DESCRIPCION.Contains(palabraABuscar));
带
query = query.Where(a => palabraABuscar.All(x => a.DESCRIPCION.Contains(x));