title: An expression tree lambda may not contain a null propagating operator
body: <p>The line <code>price = co?.price ?? 0,</code> in the following code gives me the above error, but if I remove <code>?</code> from <code>co.?</code> it works fine.</p>
  <p>I was trying to follow <a href="https://docs.microsoft.com/en-us/dotnet/csharp/linq/perform-left-outer-joins" rel="noreferrer">this MSDN example</a> where they are using <code>?</code> on line <code>select new { person.FirstName, PetName = subpet?.Name ?? String.Empty };</code> So, it seems I need to understand when to use <code>?</code> with <code>??</code> and when not to.</p>
  <p><strong>Error</strong>:</p>
  <blockquote>
  <p>an expression tree lambda may not contain a null propagating operator</p>
  </blockquote>
  <pre><code>public class CustomerOrdersModelView
  {
      public string CustomerID { get; set; }
      public int FY { get; set; }
      public float? price { get; set; }
      ....
      ....
  }
  public async Task&lt;IActionResult&gt; ProductAnnualReport(string rpt)
  {
      var qry = from c in _context.Customers
                join ord in _context.Orders
                  on c.CustomerID equals ord.CustomerID into co
                from m in co.DefaultIfEmpty()
                select new CustomerOrdersModelView
                {
                    CustomerID = c.CustomerID,
                    FY = c.FY,
                    price = co?.price ?? 0,
                    ....
                    ....
                };
      ....
      ....
   }
  </code></pre>