Popular Answer

Or something like that. I haven't tested this code out, but this is the basic idea.

sqlConnection.Query is basically telling Dapper that your sql query is going to return two objects (Project and Status). This is inferred by the first two types in the generic parameters. The third (Project) tells Dapper that this Dapper call should ultimately return a Project.

The first parameter is going to be your query, like normal.
The second parameter is some function that will receive the project and status from your query, and expect you to return a project object. Here, we're just assigning the status to the project's Status property.

splitOn lets you tell Dapper "at what point in the sql query does the "Project" object end and the "Status" object begin.