title: How to find the opposite of .Any()
body: <p>My brain is failing me on a query I need to set up.</p>
  
  <p>I have a Cat object that has two (relevant) properties:</p>
  
  <pre><code>public virtual ICollection&lt;Ribbon&gt; Ribbons { get; set; }
  public virtual ICollection&lt;Trophy&gt; Trophies { get; set; }
  </code></pre>
  
  <p>Both Ribbon and Trophy has an integer property named "UmbracoActivityId"
  The ribbons and trophies aren't directly related to each other but they're both related to a cat and an UmbracoActivity.  Cats get a ribbon for each "step" they complete in an UmbracoActivity and a trophy for finishing all the steps.  They're very competitive cats :)</p>
  
  <p>What I need to do is get a count of cats who have started the UmbracoActivity but haven't completed all the steps (have not received a trophy).</p>
  
  <p><strong>In plain English:</strong> find all distinct ribbons where the cat that has the ribbon DOES NOT have a trophy with the same UmbracoActivityId as the ribbon's UmbracoActivityId.</p>
  
  <p><strong>What I've got in code:</strong></p>
  
  <pre><code>var ribbons = db.Ribbons
     .Where(ribbon =&gt; db.Cats.Find(ribbon.CatId)
         .Trophies.Any(trophy =&gt; trophy.UmbracoActivityId == ribbon.UmbracoActivityId));
  </code></pre>
  
  <p>I'm getting close but the .Any() statement is true if the ribbon DOES have a trophy with the same UmbracoActivityId.  I need the opposite.  It's temping to just switch "==" to "!=" but in this case a cat could have many trophies with a different UmbracoActivityId.  </p>
  
  <p>I need the reverse the statement somewhere to search for the opposite but I'm not sure where to do that :(</p>
  
  <p>Thanks in advance.</p>