Search query to find a word thats could be in inside multiple properties

701 Views Asked by At

I have three properties

First name
Last name
Username

User can search for a word that can be in all three properties. I have had this two queries to achieve the desired result

searchTermFilters = searchTermFilters
.For(term)
.InFields(x => x.Firstname, x => x.Surname, x => x.Username);


searchTermFilters = searchTermFilters
            .OrFilter(x => x.Firstname.AnyWordBeginsWith(term))
            .OrFilter(x => x.Surname.AnyWordBeginsWith(term))
            .OrFilter(x => x.Username.AnyWordBeginsWith(term));

The issue is that for both of them it matches exactly. I want something like .Contains in Linq. Any insights?

2

There are 2 best solutions below

1
On

For single Filter=>

searchTermFilters = searchTermFilters.Where(w=>w.FirstName.Contains(term)).ToList();

For Multi Filter=>

searchTermFilters = searchTermFilters.Where(w=>w.FirstName.Contains(term) || w.Surname.Contains(term)).ToList();

Hope this help.

1
On

Use this way with Or condition

searchTermFilters.Filter(x => x.Firstname.Contains(term) | 
                         x => x.Lastname.Contains(term) |
                         x => x.Username.Contains(term))