Is there any loss in performance converting a 'where' clause to a lambda?
There should not be any performance difference that is a result of the syntax used. The query syntax is just eye candy that gets converted to the same underlying code.  The difference between the two is really just

_ctx.DataContext.Actions
.Join(_ctx.DataContext.Events, blah, blah, blah)
.Single(a=&gt;a.ActionId == actionId);


vs.

_ctx.DataContext.Actions
.Join(_ctx.DataContext.Events, blah, blah, blah)
.Where(a=&gt;a.ActionId == actionId)
.Single();


If there's a performance difference, I'd be very surprised.  The only way to really tell is to run some tests.  I personally prefer your second method or my first; as I do not like mixing query syntax with imperative syntax.