title: Best practice for using goto
body: <p>Is it right to use <code>goto</code> in this code? Are there any alternatives?  </p>
  
  <pre><code>return ExecuteReader(cmd, reader =&gt;
  {
      List&lt;BEPartnership&gt; partnerhip = null;
  
      //Partnership
      if (!((SqlDataReader) reader).HasRows)
          goto exit;
  
      partnerhip = 
          new List&lt;BEPartnership&gt;{new BEPartnership().GetFromReader(reader)};
  
      //Customers
      if (!reader.NextResult() &amp;&amp; !((SqlDataReader) reader).HasRows)
          goto exit;
  
      foreach (BEPartnership p in partnerhip)
          p.Partner = new BECustomer().GetFromReader(reader);
  
      //Contracts
      if (!reader.NextResult() &amp;&amp; !((SqlDataReader) reader).HasRows)
          goto exit;
  
      List&lt;BEContractB2B&gt; contracts = new List&lt;BEContractB2B&gt;();
      contracts.Add(new BEContractB2B().GetFromReader(reader));
      // contracts = new BEContractB2B().GetFromReader2(reader).ToList();
  
      exit:
      return partnerhip;
  });
  </code></pre>