Sure you can; if you map listings to each month in which it's active, you can then simply group the results by month and get the counts trivially.  Thus, the trickiest part is to just come up with the month DateTime values, which isn't that tricky.
Extension method to get month DateTimes from a start and end date:
public static IEnumerable<DateTime> GetMonths(this DateTime startDate, DateTime endDate)
{
    var monthDiff = (endDate.Month - startDate.Month) + (12 * (endDate.Year - startDate.Year));
    var startMonth = new DateTime(startDate.Year, startDate.Month, 1);
    
    return Enumerable.Range(0, monthDiff + 1)
        .Select(i => startMonth.AddMonths(i));
}
Create lookup:
var listingsByMonth = listings
    .SelectMany(l =>
        {
            return l.ListingDate.GetMonths(l.ClosingDate.AddDays(-1)) // assuming closing date is exclusive
                .Select(dt => new KeyValuePair<DateTime, Listing>(dt, l));
        })
    .ToLookup(kvp => kvp.Key, kvp => kvp.Value);
Demonstration of results:
foreach(var g in listingsByMonth)
{
    Console.WriteLine($"{g.Key:yyyy-MM}: {g.Count()}");
}
Fiddle