title: Convert SQL query/subqueries to LINQ
body: <p>Original:</p>
  
  <pre><code>select *, (PlanBasedOnDataUseage - CurrentPlanPricePerMonth) as MonthlyOverageInvoiceAmount from       
  
  (      
  Select *  ,       
  
  (select top 1 PricePerMonth from accounttypes where IsDeleted = 0 and AvailableOnline = 1      
  and  RecordsPerMonth &gt; 0) as PlanBasedOnDataUseage      
   ,       
  (select top 1 AccountTypeName from accounttypes where IsDeleted = 0 and AvailableOnline = 1      
  and  RecordsPerMonth &gt; 0) as SuggestPlanBasedOnDataUsage      
  from      
  (      
  select       
   ClientID, ClientName, ClientEmail, AccountOwnerName,       
   AccountExpiryDate,       
   DATEADD(day, DAY(AccountExpiryDate)-1,       
   CAST(      
    cast(YEar(GETDATE())as nvarchar(4)) +       
    replace(str(cast(Month(GETDATE())as nvarchar(2)), 2), ' ', '0') + '01'      
     as datetime)      
   ) as MonthlyRollOverDate      
   , AT.RecordsPerMonth as CurrentPlanMentionsMaxPerMonth      
      , AT.AccountTypeName as CurrentPlanAccountType       
   , AT.PricePerMonth as CurrentPlanPricePerMonth      
   from clients C      
   inner join AccountTypes AT on C.AccountTypeID = AT.AccountTypeID       
   LEFT OUTER JOIN AccountOwner AO on AO.AccountOwnerID = C.AccountOwnerID  
   WHERE       
   AT.AccountTypeName not in ('Standard', 'Demo', 'Trial') and      
   AccountExpiryDate &gt; getdate()      
    AND      
    (      
      DATEADD(day, DAY(AccountExpiryDate)-1,       
       CAST(      
        cast(YEar(GETDATE())as nvarchar(4)) +       
        replace(str(cast(Month(GETDATE())as nvarchar(2)), 2), ' ', '0') + '01'      
         as datetime)      
       )       
  
     &gt;=        
      --Monday Last Week      
      dateadd(d, -7, DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0))       
    AND      
      --Calc MonthlyRollOverDate      
        DATEADD(day, DAY(AccountExpiryDate)-1,       
         CAST(      
          cast(YEar(GETDATE())as nvarchar(4)) +       
          replace(str(cast(Month(GETDATE())as nvarchar(2)), 2), ' ', '0') + '01'      
           as datetime)      
         )       
     &lt;=       
      -- THis Monthday      
      DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 0)      
  
  
  
    )       
  ) as ClientsRollingOverThisWeek      
  
  ) as ClientsRollingOverThisWeekWithRealPlanAttached       
  
  where (PlanBasedOnDataUseage - CurrentPlanPricePerMonth) &gt; 0    
  </code></pre>