I’m having a heck of a time getting this to work – all the working samples online do not fit my need.
I’m trying to sort a child collection while building my entity framework statement..
the problematic line is:
TradesFilter = SortDirection.Equals(SortDirection.Ascending) ? TradesFilter.OrderBy(s => s.TradeLineItems.OrderBy(t => t.TradeDateTime).Select(t => t.TradeDateTime).FirstOrDefault()) : TradesFilter.OrderByDescending(s => s.TradeLineItems.OrderByDescending(t => t.TradeDateTime).Select(t => t.TradeDateTime).FirstOrDefault());
the error i’m receiving is:
System.NotSupportedException: Specified method is not supported.
here is some of my sample code:
using (myentities db = new myentities())
{
var TradesFilter = db.Trades.Include("TradeLineItems").AsQueryable();
totalRecords = TradesFilter.Count();
#region SORTING
if (SortColumn == "ID")
{
TradesFilter = SortDirection.Equals(SortDirection.Ascending) ? TradesFilter.OrderBy(s => s.TradeId) : TradesFilter.OrderByDescending(s => s.TradeId);
}
else if (SortColumn == "Title")
{
TradesFilter = SortDirection.Equals(SortDirection.Ascending) ? TradesFilter.OrderBy(s => s.Title) : TradesFilter.OrderByDescending(s => s.Title);
}
else if (SortColumn == "StockCode")
{
TradesFilter = SortDirection.Equals(SortDirection.Ascending) ? TradesFilter.OrderBy(s => s.StockCode) : TradesFilter.OrderByDescending(s => s.StockCode);
}
else if (SortColumn == "Company")
{
TradesFilter = SortDirection.Equals(SortDirection.Ascending) ? TradesFilter.OrderBy(s => s.Company) : TradesFilter.OrderByDescending(s => s.Company);
}
else if (SortColumn == "TradeDate")
{
TradesFilter = SortDirection.Equals(SortDirection.Ascending) ? TradesFilter.OrderBy(s => s.TradeLineItems.OrderBy(t => t.TradeDateTime).Select(t => t.TradeDateTime).FirstOrDefault()) : TradesFilter.OrderByDescending(s => s.TradeLineItems.OrderByDescending(t => t.TradeDateTime).Select(t => t.TradeDateTime).FirstOrDefault());
}
else if (SortColumn == "Result")
{
TradesFilter = SortDirection.Equals(SortDirection.Ascending) ? TradesFilter.OrderBy(s => s.Result) : TradesFilter.OrderByDescending(s => s.Result);
}
else
{
TradesFilter = TradesFilter.OrderByDescending(s => s.TradeId);
}
#endregion
/* DO A WHOLE BUNCH MORE STUFF - SORTING, PAGING, LIMITING,FILTERING - ALL CUT OUT AS UNNECESSARY TO THE QUESTION */
Trades = TradesFilter.ToList();
i’M at a complete loss and cannot find any solution online how to solve this – I need to do the ordering this way because i’m also doing paging and limiting – if the ordering is done afterwards it will only be ordering that specific "page" or "result set" – instead of ordering the entire result set before the paging takes place (i hope this makes sense.. lol)
thanks in advance!!!
I think changing it like this should help. If not post the full error message