2010-08-02 3 views
1

내가 공급 업체의 목록을 가져옵니다 다음이이 실행될 때LINQ있는 OrderBy 쿼리

그러나
public List<tblSupplierPerformance> GetSupplierInfo(string memberid, string locationid, string supplieridname) 
{ 
    MyEntities suppliers = new MyEntities(); 

    var r = (from p in suppliers.tblSupplierPerformances 
      where p.MemberId == memberid && p.LocationId == locationid 
      orderby p.TotalPurchaseQuantity 
      select p) 
      .Distinct(); 

    if (supplieridname != "0") 
     r = r.Where(p => p.SupplierIDName == supplieridname); 

    return r.ToList(); 
} 

이의 ORDERBY가 주문하지 않는 것입니다.

제가 생각하기에, 으로 생각합니다. "return r."에서 orderby를 구현해야합니다. 무대 그러나 나는 이것을하는 방법을 정말로 모른다, 또는, 나는 상점의 도처에 매우 틀릴 수 있었다!

모든 포인터가 기꺼이 받았습니다. 각 엔티티는 자연적으로하지 않습니다 - 당신이 참여하거나 그런 아무것도 아니에요, 나는 당신이 별개가 필요한 이유를 잘 모르겠어요하지만

답변

8

나는 ... 그것은 순서를 엉망으로하는 Distinct 전화의 의심 뚜렷한? 어쨌든

, 당신은 확실히 return 문에 순서를 움직일 수 :

return r.OrderBy(p => p.TotalPurchaseQuantity).ToList(); 
+0

좋은 지적 별개 대한 대가로 순서를 구현해야 - 지금 레거시 :) –

+0

그냥 simialr 뭔가 찾고있는 사람을 위해, 내가 위의 했어하지만 OrderByDescending, funnily 충분히, 주문 totalpurchaseQuantity 내림차순. 감사합니다. –

1

예, 당신이

return r.ToList().OrderBy(o => o.Column1); 
+0

데이터베이스에서보다 .NET 자체에서 정렬을 수행하므로 효율성이 떨어질 수 있습니다. ToList를 호출하기 전에 * 그것을 SQL에 넣는다. –

+0

@ 존 귀하의 소중한 의견을 많이 주셔서 감사합니다. 좋은 지적 !! – anishMarokey

+0

@Skeet : 당신은 ** LINQ to SQL ** 또는 ** LINQ to Entities **를 언급하고 있습니까? ** LINQ to Objects **와는 상관 없지만 상관 없습니까? – JohnB