I want the users of our web app to search for multiple keywords in one search textbox seperated by a space, example: "jean rebecca simpson".
In the backend we have EF Core and a DbContext having a DbSet and a queryhandler that builds an IQueryable.
The function is like this, where the keywords are passed in an enumerable list and the columns can be defined using a private enumerable so that it can be easly changed with more or less columns in the feature.
private static IQueryable<Student> ApplyFilter(IQueryable<Student> query, IEnumerable<string> keywords)
        {
            foreach (var keyword in keywords)
            {
                foreach (var searchColumn in GetSearchColumns())
                {
                    query = query.Where(v => EF.Functions.Like(searchColumn, $"%{keyword}%"));
                }
            }
            return query;
        }
    
private static IEnumerable<string> GetSearchColumns()
        {
            yield return nameof(Student.SurName);
            yield return nameof(Student.Gender);
            yield return nameof(Student.LastName);
        }
I want the IQueryable to use conditional ORs, in the way it was like this:
query = query.Where(v => EF.Functions.Like("LastName", $"%{keywords[0]%" || EF.Functions.Like("LastName", $"%{keywords[1]%")
How can this be accomplished ? The looped Where clause is acting like a conditional AND construct.
