1

私はこれをうまく動作させるために時間を費やしています。オンラインの作業サンプルはすべて自分のニーズに合っていません。私は、エンティティフレームワークステートメントを構築しながら、子コレクションをソートするためにしようとしているダイナミックステートメントの構築中にエンティティフレームワークで子コレクションを並べ替える

..

問題の行は次のとおりです。

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(); 

- 私はだから、このような順序付けを行う必要がありますページングが行われる前にすべての結果セットを注文するのではなく、その特定の "ページ"または "結果セット"を注文するだけです(笑)

ありがとうございます!

答えて

2

このように変更すると役立ちます。完全なエラーメッセージを投稿していない場合は

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

OMGはありがとうございました!!!!!!!!!!!!!おい...私はこの一日中、壁に向かって頭を打ちました。あなたはロックします... – 99823

+1

@Loren - 私は助けてくれると嬉しいです – Aducci

関連する問題