У меня очень много времени, чтобы заставить это работать - все рабочие образцы онлайн не соответствуют моим потребностям.
Я пытаюсь отсортировать дочернюю коллекцию при построении своего оператора структуры сущности ..
проблемная строка:
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());
ошибка, которую я получаю:
System.NotSupportedException: указанный метод не поддерживается.
вот мой пример кода:
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();
Я нахожусь в полной растерянности и не могу найти никакого решения в Интернете, как решить эту проблему - мне нужно сделать заказ таким образом, потому что я также делаю пейджинг и ограничение - если заказ сделан позже, он будет только заказывать эта конкретная «страница» или «набор результатов» - вместо того, чтобы упорядочивать весь набор результатов до того, как произойдет разбиение по страницам (надеюсь, это имеет смысл .. lol)
спасибо заранее !!!