title: Loop Through Every Possible Combination of an Array
body: <p>I am attempting to loop through every combination of an array in C# dependent on size, but not order.  For example: <code>var states = ["NJ", "AK", "NY"];</code></p>
  
  <p>Some Combinations might be:</p>
  
  <pre><code>states = [];
  states = ["NJ"];
  states = ["NJ","NY"];
  states = ["NY"];
  states = ["NJ", "NY", "AK"];
  </code></pre>
  
  <p>and so on...
  It is also true in my case that <code>states = ["NJ","NY"]</code> and <code>states = ["NY","NJ"]</code> are the same thing, as order does not matter.</p>
  
  <p>Does anyone have any idea on the most efficient way to do this?</p>