2013-06-20 2 views
1

다음은 jquery autocomplete 목록을 채우기 위해 사용하는 간단한 Linq 쿼리입니다. 목록은 .Distinct() 메서드가 호출 될 때까지 올바르게 정렬됩니다. 누가 왜 목록에서 중복을 제거하고 순서대로 유지할 수 있는지에 대해 나에게 단서를 줄 수 있습니까?.Distinct() 사용 후 더 이상 Linq 쿼리가 사용되지 않습니다.

public JsonResult OverrideSearch(string term) 
    { 
     var drm = from d in db.ZipCodeTerritory 
        where d.DrmTerrDesc.Contains(term) 
        orderby d.DrmTerrDesc 
        select d.DrmTerrDesc; 

     drm = drm.Distinct(); 

     return Json(drm, JsonRequestBehavior.AllowGet); 
    } 
+0

'분별력'이 아니라 먼저 주문 하시겠습니까? –

답변

2

는 별개 후 순서를 적용 :

public JsonResult OverrideSearch(string term) 
{ 
    var drm = from d in db.ZipCodeTerritory 
       where d.DrmTerrDesc.Contains(term) 
       select d.DrmTerrDesc; 

    drm = drm.Distinct(); 

    return Json(drm.OrderBy(d => d), JsonRequestBehavior.AllowGet); 
} 

BTW의 발언이 :

public JsonResult OverrideSearch(string term) 
{ 
    var drm = db.ZipCodeTerritory 
       .Where(d => d.DrmTerrDesc.Contains(term)) 
       .Select(d => d.DrmTerrDesc) 
       .Distinct() 
       .OrderBy(d => d); 

    return Json(drm, JsonRequestBehavior.AllowGet); 
} 

또는 쿼리 구문과

(I 쿼리 및 방법 구문을 혼합 좋아하지 않는다) MSDN의 Queryable.Distinct 메서드는 보통 순서가없는 시퀀스를 반환한다고 알려줍니다.

Distinct (IQueryable) 호출을 나타내는 식을 실행 한 결과로 발생하는 쿼리 동작은 원본 매개 변수 유형의 구현에 따라 다릅니다. 예상되는 동작은 원본에 고유 항목의 순서가없는 시퀀스를 반환한다는 것입니다.

+1

완벽한, 감사합니다! – NealR

관련 문제