Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中排序子集合,同时生成动态语句_C#_Linq_Entity Framework_Entity Framework 4_Linq To Entities - Fatal编程技术网

C# 在实体框架中排序子集合,同时生成动态语句

C# 在实体框架中排序子集合,同时生成动态语句,c#,linq,entity-framework,entity-framework-4,linq-to-entities,C#,Linq,Entity Framework,Entity Framework 4,Linq To Entities,我花了很长时间来完成这项工作——所有在线工作的样本都不符合我的需要 我试图在构建实体框架语句时对子集合进行排序 问题在于: TradesFilter = SortDirection.Equals(SortDirection.Ascending) ? TradesFilter.OrderBy(s => s.TradeLineItems.OrderBy(t => t.TradeDateTime).Select(t => t.TradeDateTime).FirstOrDefault

我花了很长时间来完成这项工作——所有在线工作的样本都不符合我的需要

我试图在构建实体框架语句时对子集合进行排序

问题在于:

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();
我完全不知所措,无法在网上找到任何解决方案如何解决这个问题-我需要以这种方式进行排序,因为我也在进行分页和限制-如果之后进行排序,它将只排序特定的“页面”或“结果集”-而不是在分页发生之前排序整个结果集(我希望这是有意义的..哈哈)


提前感谢!!!

我认为这样更改应该会有所帮助。如果没有,请发布完整的错误消息

TradesFilter =
  SortDirection.Equals(SortDirection.Ascending) ?
  TradesFilter.OrderBy(s => s.TradeLineItems.Min(t => TradeDateTime)) :
  TradesFilter.OrderBy(s => s.TradeLineItems.Max(t => TradeDateTime));

天哪,非常感谢你!!!!!!!!!!!!!!!!!老兄…我一整天都在为这个问题头痛…你太棒了…@Loren-我很高兴我能帮上忙