Much depends on your specific situation so it is difficult to provide an exact recommendation.
In short, including the Dockerfile at the .sln level, or even at the root of your source repository, is acceptable. As a general practice, most developers that work with docker prefer to keep the Dockerfile in the working directory for the docker build context. I recommend you read the following guidelines on docker build:
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#understand-build-context
Your build can use a COPY instruction to reference a file in the context. Therefore, if you want to COPY multiple projects from your solution into your image during docker build, then you should save the Dockerfile in a parent directory that contains all projects which need to be included.
You might benefit from this dotnet docker sample repository on github to give you some ideas about the structure of your repo:
https://github.com/dotnet/dotnet-docker/tree/master/samples/aspnetapp
I also recommend that you read about how to exclude files from your image using a .dockerignore. This will help you minimize your final image size.
Hope this helps!