Marshal Marshal - 3 months ago 33
C# Question

Last and LastOrDefault not supported

I am trying to get the First value in the list and the last value. The query operator

First()
is supported but
Last()
and
LastOrDefault()
gives error. Am I using the
Last()
operator in incorrect manner?

var purchaseBills = db.PurchaseBills.OrderBy(p => p.BillID);

if (purchaseBills.Count() >0)
{
var firstBill= purchaseBills.First(); //This is supported

//Attempt 1
var lastBill = purchaseBills.Last(); // Not supported

//Attempt 2
var lastBill = purchaseBills.LastOrDefault(); //Not supported

//Attempt 3
var lastBill = purchaseBills.Reverse().First(); //Not supported

textBoxPurchaseBillFrom.Text = firstBill.BillNo.ToString();
textBoxPurchaseBillTo.Text = lastBill.BillNo.ToString();
}


Update:
--Errors--


Attempt 1: The query operator 'Last' is not supported.

Attempt 2: The query operator 'LastOrDefault' is not supported.

Attempt 3: The query operator 'Reverse' is not supported.

Answer
  • Instead of putting it into an own list by calling ToList() or ToArray() i would prefer to use AsEnumerable().
  • Additionally like the others you should try OrderByDescending()
  • Instead of Count() i would use Any().