2013-08-03 1 views
5

MVC를 처음 사용했습니다.mvc 면도기 정렬 된 데이터로보기에서

내 html 페이지에서 데이터 정렬을 구현하고 싶습니다.

public IEnumerable<PercConfigEntry> GetPercConfigEntries() 
{ 
    var results = from g in this.context.PercConfigEntry 
        where g.Key == "ConfigEntries" 
        select g; 
    return results; 
} 

그리고보기 :이 작동

@model IEnumerable<PercConfigEntry> 
@foreach (var config in Model) 
{ 
    ... 
} 

나는이 코드 생성 모델을 가지고있다. 그러나 다음과 같이 쿼리에 "orderby"를 추가하면

public IEnumerable<PercConfigEntry> GetPercConfigEntries() 
{ 
    var results = from g in this.context.PercConfigEntry 
        where g.Key == "ConfigEntries" 
        orderby g.ConfigName 
        select g; 
    return results; 
} 

foreach에는 DataServiceQueryException이 발생합니다.

무엇이 잘못 되었나요?

미리 감사드립니다.

+0

MVC 또는 면도기와 관련이 있는지 의심 스럽습니다. 내 생각 엔 데이터 서비스의 쿼리 공급자에 문제가 있다는 것입니다. 'GetPercConfigEntries()'에서 ToList()를 호출하면 예외가 발생합니다. –

+0

'ToList()'를 호출 한 다음'results.OrderBy (x => x.ConfigName)' – Nilesh

+0

과 같이 주문을 사용하십시오. var results = (g from this.context.PercConfigEntry 여기서 g.Key == " ConfigEntries " select g) .OrderBy (o => o.ConfigName); ' – christiandev

답변

2

문제는 쿼리 공급자와 관련이 있습니다. 아마도 그것은 단순히 주문을 지원하지 않습니다. 다음, 다시 주문을

public IEnumerable<PercConfigEntry> GetPercConfigEntries() 
{ 
    var results = this.context.PercConfigEntry 
     .Where(g => g.Key == "ConfigEntries") 
     .AsEnumerable() 
     .OrderBy(g => g.ConfigName); 
    return results; 
} 

이없이 제공 에 대한 순서를 실행하는 쿼리를 강제로 :

public IEnumerable<PercConfigEntry> GetPercConfigEntries() 
{ 
    var results = 
     (from g in this.context.PercConfigEntry 
     where g.Key == "ConfigEntries" 
     select g) 
     .AsEnumerable() 
     .OrderBy(g => g.ConfigName); 
    return results; 
} 

을 또는 유창 구문 : 어떤 추가 정보없이,이 권 해드립니다 즉, 클라이언트에서 —을 호출하면 AsEnumerable을 호출하면 결과 집합이 쿼리 공급자에서 효과적으로 연결이 끊어 지므로 OrderBy (또는 이후 메서드)이 클라이언트에서 평가됩니다. 공급자가 주문하는 것만 큼 효율적이지는 않지만 공급자가 주문을 지원하지 않으면 이것이 유일한 방법입니다.