I have a query that looks a bit like this:
context.Users
.........
.Select(user => new UserDTO
{
UserName = user.Name,
DataList = context.Data.Where(x => x.UserId == user.Id).ToList(),
Emails = context.Email.Where(x => x.UserId == user.Id).ToList(),
BankAccounts = context.BankAccount.Where(x => x.UserId == user.Id).ToList(),
.....
}
The problem with this is that this all creates a massive query, because all those subselects are seperate lists. The only reason these selects are there is because sometimes I need to filter on them. So I was wondering if it is possible to build them dynamically, like this:
var query = context.Users
.........
.Select(user => new UserDTO
{
UserName = user.Name,
.....
}
if (EmailFilter) query.Select.Add(Emails, context.Email.Where(x => x.UserId == user.Id).ToList());
if (AccountsFilter) query.Select.Add(BankAccounts, context.BankAccount.Where(x => x.UserId == user.Id).ToList());
Not exactly that of course but you get the idea hopefully.