Linq to objects 식은 열거 된 시퀀스의 요소를 반환하는 개체를 반환합니다. 일반적으로 지연된 LINQ-to-Object 메서드는 파이프 라인으로 작동하므로 시퀀스의 각 요소는 다음 요소가 처리되기 전에 처리 파이프 라인을 통과합니다.Linq-to-Objects 쿼리와의 혼동으로 인해 Linq-to-Entities 쿼리의 결과가 작동하지 않습니다.
a) 그러나 Linq에 투 사물 쿼리가 Linq에 대 엔티티 쿼리 결과에서 작동하는 경우, 다음 foreach
시도가 search
을 반복 할 때, 또 각 요소는 전체 처리 시퀀스 흐르지 않는 다음의 요소가 처리되기 전에 (다시 말하면 DB에서 검색된 시퀀스의 첫 번째 요소이고 Enumerable.Where
에 의해 처리 된 다음 Enumerable.SelectMany
에 의해 처리 된 다음 DB에서 다음 요소 만 검색 됨) 또는 DB에서 한 번에 검색된 전체 요소 집합입니다 (foreach
이 시퀀스에서 첫 번째 요소를 읽는 경우에만) 이러한 요소는 Linq-to-Objects 연산자의 처리 파이프 라인을 통해 흐르기 시작합니까?
var search = context.Contacts.AsEnumerable().
Where(s => s.ContactID > 10).SelectMany(s => s.Address);
는
1) 집합 전체가 한 번에 DB 형식으로 검색되고 Enumerable 연산자가 요소 처리를 시작합니까? 2)이 쿼리를 사용하더라도 올바른가 Enumerable 연산자는 모든 Enumerable 연산자가 이전 요소 처리를 마쳤을 때만 특정 요소 처리를 시작합니까? – carewithl
db 쿼리가 실행되고'AsEnumerable' 후에 linq 문의 모든 체인이 하나의 파이프 라인으로 평가됩니다. 전체 문장 (db 부분 포함)은 실제로 열거 된 경우에만 실행된다는 것이 분명해야합니다. –
"하나의 파이프 라인"으로 무엇을 의미하는지 물어볼 수 있습니까? – carewithl