2013-05-02 5 views
2

다음은 내 ASP MVC 3 컨트롤러에서 상태 코드에 따라 사전 순으로 결과를 정렬하려고하는 Linq 쿼리입니다. 이 시간의 99 %는 잘 작동하지만, 나는 우리가 인덱스에 목록을 각 은행의 경우 너무. Linq 쿼리의 OrdersBy가 항상 올바르게 주문하지 않는 경우

enter image description here

같은 순서가있는 몇 가지 목록을 찾는거야, 난 보조 테이블에서 끌어 필요 BankListAgentId을 입력하고 해당 은행에서 사용하는 모든 상담원을 표시하십시오. 대다수의 시간은 상담원이 상태 코드에 따라 적절하게 정렬되지만 위의 스크린 샷과 같은 순서로 몇 번이나 정렬됩니다.

foreach (var bank in banklist) 
{ 
    bank.BankListAgentId = (from a in db.BankListAgentId 
          where a.BankID == bank.ID 
          select a).OrderBy(x => x.StateCode, StringComparer.CurrentCultureIgnoreCase).ToList(); 
}  

편집

나는 (99 %는 제대로 주문 1 %되지 않음) 이후

foreach (var bank in banklist) 
{ 
    var agent = (from a in db.BankListAgentId 
       where a.BankID == bank.ID 
       select a).ToList(); 

    agent = agent.OrderBy(x => x.StateCode).ToList(); 

    bank.BankListAgentId = agent.ToList(); 
} 
+0

위의 스크린 샷은 bank.BankListAgentId 또는 bank입니까? – ysrb

+0

그냥, 나는 db 쿼리를 소비하고 오직'OrderBy'를하고'List'로 돌아갈 것입니다. – SimpleVar

+0

@ysrb : 그것은'bank.BankListAgentID'입니다. 게시물에 대한 설명을 추가했습니다. thx – NealR

답변

0

같은 결과를과 같이 각각의 라인에 작업을 분리했지만, 가지고 당신의 OrderBy()는 foreach (은행 목록의 var 은행) 루프 내부에 있으며 각 반복에서 실행될 때만 각 개별 쿼리에 영향을줍니다. 모든 쿼리가 끝나면 OrderBy 절이 필요합니다.

이 대신 같은 것을보십시오 :

banklist.SelectMany을 (은행 => bank.BankListAgentId) .OrderBy (A => a.StateCode, StringComparer.CurrentCultureIgnoreCase) .ToList();