Sorting entities by Z in every call to Draw
Not sure about Where


Where method (if applied to IEnumerable&lt;T&gt;) is O(N) operation, and it's a lazy operation so it will do the filtering while consumer reads the result.


  Should I be worrying about this call at all?


The best way to answer this question is to measure the performance and see if it satisfies you. If not - then start thinking about caching results and refreshing them instead of calculating from scratch.


  If so, how can I reduce the runtime complexity, and/or cache the results reliably?


It's hard to suggest good solution based on the information you've provided... Will the number of entities change over time? Can they "loose" SpriteComponent?

Assuming that the number of entities is the same and only Z will slightly change you can cache the sorted list from previous run, and apply TimSort or Insertion sort (you would need to implement it yourselves or grab from Wikipedia) to nearly-sorted list.