Is there a better way to handle multiple join statements in a linq query?
I'm not sure what you mean by a 'cleaner way'. The syntax you're using is known as query syntax and is by far the best for readability when you have multiple joins.

If you use method syntax to express the same query you'll quickly see what I mean.

However, if you use method syntax you'll be able to break those joins up using different methods.

For example:

IGrouping&lt;Results&gt; AddJoin(IQueryable&lt;Stuff&gt; query) {

    if (business_rule) {
        return query.Join(inner =&gt; inner.Key, outer =&gt; inner.Key == outer.Key);
    }

    return query;
}


In this way you can reuse parts of your join and construct them dynamically.

Hope this helps.