我有一段时间让这个工作 - 所有在线工作样本都不符合我的需要。
我正在尝试在构建实体框架语句时对子集合进行排序..
有问题的一行是:
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();
我完全失去了,无法在网上找到任何解决方案如何解决这个问题 - 我需要以这种方式进行排序,因为我也在进行分页和限制 - 如果订购完成之后它只会订购特定的“页面”或“结果集” - 而不是在发生分页之前对整个结果集进行排序(我希望这是有道理的。大笑)
提前致谢!!!
答案 0 :(得分:2)
我认为改变它应该会有所帮助。如果没有发布完整的错误消息
TradesFilter =
SortDirection.Equals(SortDirection.Ascending) ?
TradesFilter.OrderBy(s => s.TradeLineItems.Min(t => TradeDateTime)) :
TradesFilter.OrderBy(s => s.TradeLineItems.Max(t => TradeDateTime));