How to combine IQueryable records in .net Core 6 Web API

Viewed 40

I'm using .net Core 6 web API, and I've this case where I need to loop through multiple object, and each has a IQueryable result. Then all results need to be grouped in one query. Finally the the result will be sent as paginated list.

Here's more details in the code, I will get list of ObjectA from db:

var query = _context.ObjectA.AsQueryable();

Now I need to get list of User. For some reason the users will have multiple records with their username, so each record represent a role:

var rolesFromDb = await _context.User.Include(x => x.Role).Where(x => x.Username == "user").ToListAsync();

Now I need to loop through dynamic roles and filter the query. I have 2 (or more) conditions, the the code will look like this:

            if (rolesFromDb.Count != 0)
            {
                var result = new List<ObjectA>();
                foreach (var item in rolesFromDb)
                {
                    if (item.Role.Level == 1)
                    {
                        var condition1 = query.Where(x => x.Level == 1);
                        result.AddRange(condition1);
                        continue;
                    }
                    if (item.Role.Level == 2)
                    {
                        var condition2 = query.Where(x => x.Level == 2);
                        result.AddRange(condition2);
                        continue;
                    }
                }
                query = result; // I need to do something like this, this is not the way to do ofc
            }

After this loop, I've a search filter that depends on this query.

In general, my main issue is I'm not able to make query = all filtered queries. Thank you.

0 Answers
Related