var selectedProducts = from p in products
where p.Category == 1
select p;
var selectedProducts = products.Where(p=>p.Category==1) ;
위의 두 문장은 동일한 결과를 생성하는 것으로 보입니다.확장 방법과 직접 쿼리의 차이점
그런데 어떤 차이가 있습니까?
어느 쪽이 더 효율적입니까?
var selectedProducts = from p in products
where p.Category == 1
select p;
var selectedProducts = products.Where(p=>p.Category==1) ;
위의 두 문장은 동일한 결과를 생성하는 것으로 보입니다.확장 방법과 직접 쿼리의 차이점
그런데 어떤 차이가 있습니까?
어느 쪽이 더 효율적입니까?
차이는 없습니다. 첫 번째 (쿼리 식)는 컴파일러에서 두 번째로 변환되며 런타임에 영향을주지 않습니다.
은 참조 :
이이 경우이 두 방식의 차이가 아니라, 어떤 경우에는 더 나은 쿼리를 사용하고 확장 메서드를 사용하거나 쿼리를 사용하는 것이 불가능한 경우도 있습니다.
확장 메소드가 복잡하고 조인과 같이 읽을 수없는 상황에서 쿼리를 사용할 수 있습니다. 또한 쿼리 구문에서 사용할 수없는 Distinct와 같은 일부 경우 확장 메서드를 사용할 수 있습니다. 또한 코드를 쉽게 읽을 수 있도록 method chaining
을 사용하는 확장 메서드 호출을 사용할 수 있습니다.
당신은 확장 메서드 및 쿼리의 혼합을 사용하지만 (코드 가독성을) 잘되지 않습니다 수 있습니다
(from p in products
where p.Category == 1
select p).Distinct()
같은 당신이 LinqPad를 다운로드하고 다른 쿼리 식을 작성하고 쿼리 표현식에 대해 생성되는 것을 람다 식을 관찰 할 수있다 –