2011-03-13 3 views
4
var selectedProducts = from p in products 
         where p.Category == 1 
         select p; 

var selectedProducts = products.Where(p=>p.Category==1) ; 

위의 두 문장은 동일한 결과를 생성하는 것으로 보입니다.확장 방법과 직접 쿼리의 차이점

그런데 어떤 차이가 있습니까?

어느 쪽이 더 효율적입니까?

+0

같은 당신이 LinqPad를 다운로드하고 다른 쿼리 식을 작성하고 쿼리 표현식에 대해 생성되는 것을 람다 식을 관찰 할 수있다 –

답변

2

이이 경우이 두 방식의 차이가 아니라, 어떤 경우에는 더 나은 쿼리를 사용하고 확장 메서드를 사용하거나 쿼리를 사용하는 것이 불가능한 경우도 있습니다.

확장 메소드가 복잡하고 조인과 같이 읽을 수없는 상황에서 쿼리를 사용할 수 있습니다. 또한 쿼리 구문에서 사용할 수없는 Distinct와 같은 일부 경우 확장 메서드를 사용할 수 있습니다. 또한 코드를 쉽게 읽을 수 있도록 method chaining을 사용하는 확장 메서드 호출을 사용할 수 있습니다.

당신은 확장 메서드 및 쿼리의 혼합을 사용하지만 (코드 가독성을) 잘되지 않습니다 수 있습니다

(from p in products 
where p.Category == 1 
select p).Distinct() 
관련 문제