lambda와 함께 iqueryable vs ienumerable 는 무엇을 선택해야합니까?

StackOverflow https://stackoverflow.com/questions/245343

  •  05-07-2019
  •  | 
  •  

문제

나는 Lambda와 함께 점점 더 많은 운동을하지만 언젠가 예를 들어 사용하는 이유를 알지 못합니다. .AsQueryable(); 그것은 iqueryable을 사용하고 언젠가는 생략합니다 .AsQueryable(); 그리고 ienumerable을 사용하십시오.

나는 그것을 읽었다 MSDN 그러나 나는 "발현 트리 실행"이 어떻게 이점이 아닌지 알지 못한다.

누구든지 나에게 설명 할 수 있습니까?

도움이 되었습니까?

해결책

IQuery는 Ienumerable을 구현하므로 박쥐에서 바로 Iqueryable을 사용하면 ienumerable로 할 수있는 모든 것을 할 수 있습니다. iqueryables는 일부 Lambda 표현식을 기본 데이터 소스에서 쿼리로 변환하는 것을 다룹니다. 이것은 SQL 데이터베이스 또는 객체 세트 일 수 있습니다.

기본적으로, 당신은 일반적으로 그것이 퀴즈 할 수 있거나 ienumerable 인 경우 어떤 방식 으로든 돌볼 필요가 없어야합니다.

다른 팁

사용자로서 일반적으로 신경 쓰지 않아도됩니다. 실제로 데이터 소스의 구현 자에 관한 것입니다. 데이터 제공 업체가 ienumerable을 구현하는 경우 기본적으로 객체 실행을 위해 LINQ를 수행하는 것입니다. 즉, 컬렉션에서 메모리 작동 중입니다. iqueryable은 데이터 소스에 표현식 트리를 실행을위한 대체 표현으로 변환 할 수있는 기능을 제공합니다 (일반적으로 열거에 의해) (일반적으로 열거).

최종 사용자의 배려를 볼 수있는 유일한 시간은 Iqueryable이 표현식을 노출시키기 때문에 실행 될 식 트리를 검사하려는 경우입니다. 또 다른 용도는 공급자를 검사하는 것일 수 있습니다. 그러나이 두 시나리오는 실제로 다른 쿼리 제공 업체의 도구를 위해 예약되어 있어야하며 표현식을 변환하려고합니다. LINQ의 요점은 사용될 식 실행의 구현에 신경 쓰지 않아도된다는 것입니다.

Arne Claassen에 동의합니다. 데이터 소스에서 제공하는 기본 임플먼트 토린에 대해 생각 해야하는 경우가 있습니다. 예를 들어 이것을 확인하십시오 블로그 게시물 특정 시나리오에서 ienumerable 및 iqueryable에 의해 생성 된 SQL이 어떻게 다른지 보여줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top