1

나는이 작업을 수행하는 데 시간이 많이 걸리고 있습니다. 온라인으로 작동하는 모든 샘플이 내 필요에 맞지 않습니다. 내 엔티티 프레임 워크 문을 구축하는 동안 아이 수집을 분류하기 위해 노력하고있어동적 설명 작성 중 Entity Framework에서 하위 컬렉션 정렬

..

문제가있는 줄은 다음과 같습니다

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

세상에는 정말 감사합니다 !!!!!!!!!!!!! 야 ... 나는이 하루 종일 벽에 머리를 두들겨 맞았다. 너는 흔들린다. ... – 99823

+1

@Loren - 내가 도울 수있어서 다행이다. – Aducci

관련 문제