Speed up query to rank team sales by aggregating data from two databases
Try what's below on for size. The date calculation is moved out of the loop, the TeamSales list capacity is pre-allocated and finally, the two LINQ statements are combined into one and rolled into AddRange rather than the explicit loop.

public static int GetNationalRank(int teamId, int CurrentUserId)
{
    int currentUserRank;
    var startDate = Convert.ToDateTime(DateTime.Now.AddDays(-(DateTime.Now.Day - 1)).ToString("M/d/yyyy"));
    var endDate = Convert.ToDateTime(DateTime.Now.AddDays(1).ToString("M/d/yyyy"));
    List&lt;ProPit_User&gt; proPitUsers;

    using (var ppdb = new ProsPitEntities())
    {
        proPitUsers = ppdb.ProPit_User.Where(x =&gt; x.SalesRepID != null).ToList();
    }

    var teamSales = new List&lt;TeamSales&gt;(proPitUsers.Count());

    using (var db = new TraegerEntities())
    {
        teamSales.AddRange(proPitUsers
            .Select(user =&gt; new
            {
                user,
                total = db.Orders.Where(o =&gt; o.DateCompleted &gt;= startDate
                    &amp;&amp; o.DateCompleted &lt; endDate
                    &amp;&amp; (o.Status == 1 || o.Status == 2)
                    &amp;&amp; o.Kiosk != 0
                    &amp;&amp; o.SalesRepID == user.SalesRepID).Select(o =&gt; (decimal?)o.OrderTotal).Sum() ?? 00.0M
            })
            .Select(userTotal =&gt; new TeamSales { userId = userTotal.user.userID, TotalSales = userTotal.total }));

        var rank = teamSales
            .OrderByDescending(x =&gt; x.TotalSales)
            .FindIndex(x =&gt; x.userId == CurrentUserId);

        currentUserRank = rank == -1 ? 0 : rank + 1;
    }

    return currentUserRank;
}