2011-04-19 4 views
0
public IEnumerable GetActive() 
{ 
    return Session.CreateQuery("from Agency where active=true order by agencyname").List(); 
} 

분명히, 나는 질의 자체를 정렬 할 수있다. 그러나 나중에 그것을하는 것은 어떨까? 난 여기에 반환 IEnumerable 정렬 싶어요. foreach 루프에서 결과를 사용할 수는 있지만 LINQ를 사용하여 데이터를 정렬하는 등의 표준 목록 수집 기능을 사용할 수 없습니다. 이것을 정렬하는 가장 좋은 방법은 무엇입니까?NHibernate 질의 결과 정렬하기

편집 :이 일을하고, foreach는 사용할 수있는 기능 보존 :

public IEnumerable<Agency> GetActive() 
{ 
    return Session.CreateQuery("from Agency where active=true") 
    .List<Agency>().orderby(c=>c.agencyname); 
} 
+0

실제로 몇 분 전에 "소스는 IEnumerable <>"이 아니 었습니다 – Chris

+0

어떤 버전의 NHibernate를 사용하고 있습니까? – mxmissile

+0

NHibernate.dll의 버전은 3.0.0.4000입니다. – Chris

답변

3

을 ToList() 메서드를 사용하여 LIst에 IENumerable을 수행 한 다음 정렬합니다.

+0

묻기 전에 해봤지만 오류가 발생합니다. "인터페이스 'System.Collections.IEnumerable'에 형식 매개 변수가 없습니다. – Chris

+0

반환 Session.CreateQuery ("Agency에서 활성 = 실제 주문은 대행사 이름으로 주문 "). 목록 ); foreach (기관의 기관 대행사 .OrderBy (c => c.AgencyId)) { – Chris

+2

아, 이전에 System.Collections.Generic을 가져 오지 않았기 때문에 이전에 표시되지 않은 이유는 System.Collections뿐이었습니다. 보통, resharper는 이런 종류의 것을 선택합니다. – Chris

0

당신은 변환 할 수 있습니다이 표에 매핑 된 개체의 강력한 형식의 목록을 반환해야

public IEnumerable<Agency> GetActive() 
{ 
    return Session.CreateQuery("from Agency where active=true order by agencyname").List<Agency>(); 
} 

foreach (Agency agency in agencies.OrderBy(c=>c.AgencyId)) { ... }