In my project i have a text-box which is used for search now suppose if someone is searching hot pizza then i have to show them all result containing whether how or pizza but i have to order them so than result containing how pizza comes first then shows result of hot and then pizza
so i am getting query from view
then keep them in List
List<string> queryList = query.ToLower().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries).Where(q => q.Length > 3).ToList();
now if i can not use Contains for search like this
var matchedProjects = (from project in unitOfWork.ProjectRepository
.Find(p => p.IsActive && p is Project && new[] { p.Name, p.ProjectAddress.City.Name, p.ProjectAddress.Address1 }
.Contains(queryList))
Currently I am doing this
List<string> queryList = query.ToLower().Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries).Where(q => q.Length > 3).ToList();
foreach (var q in queryList)
{
var matchedProjects = (from project in unitOfWork.ProjectRepository
.Find(p => p.IsActive && p is Project && new[] { p.Name, p.ProjectAddress.City.Name, p.ProjectAddress.Address1 }
.Any(prjt=>prjt.Contains(q)))
select project as Project).AsParallel().ToList();
allSearchedProject.AddRange(matchedProjects);
}
return allSearchedProject;
but problem is this it hits database for every word how to do get similar result in one hit
so can someone tell me how to search and sort them
-Thanks