Suppose I have the following tables:
tb_1: |user_id|user_name|email|age|
tb_2: |item_id|item_name|value|
tb_3: |user_id|item_id|
And I have the models below:
Item:
public class Item {
    public string Name {get; set;}
    public int Value {get; set;}
}
User:
public class User {
    public Guid UserId {get; set;}
    public List<Item> Itens {get; set;}
}
I am using the following Query to do the search:
using(var connection = ...)
{
    var query1 = "SELECT ... FROM tb_1";
    var query2 = "SELECT ... FROM tb_2 JOIN tb_3 ON ... WHERE tb_3.user_id = @UserId";
    var users = await connection.QueryAsync<User>(query1);
    foreach(var user in users)
    {
        user.Itens = await connection.QueryAsync<Item>(query2, user.UserId);
    }
    return users;
}
Is it possible to remove the foreach and use only one query?
PS: The tables are N to N.
 
    