문제

실제로 이것은이 게시물과 동일한 질문입니다.

지연된 방식이 아닌 DAL에서 호출 할 때 LINQ 쿼리가 실행되도록하려면 어떻게해야합니까?

그러나 그는 설명하지 않았기 때문에 그는 그것을 원했고, 질문은 조금 지나친 것 같습니다. 저의 유사한 설명이 포함 된 문제는 다음과 같습니다.

두 가지 유형의 스레드가 있습니다 (잠시 UI 스레드를 무시). "데이터 수집"스레드 유형과 "계산"스레드 유형이 있습니다. 데이터 수집 스레드는 느립니다. 다양한 장소에서 체계 할 수있는 약간의 데이터가 있습니다. 계산 스레드는 비교적 빠릅니다. 이 시점까지 디자인 모델은 데이터 수집 스레드를 보내 데이터를 찾는 것입니다. 완료하면 데이터가 계산을 위해 데이터를 전달하는 것입니다.

LINQ에서 내 데이터 수집을 코딩했을 때 나는 그 속도가 느려지는 일부를 들어 올렸다. 내 계산 스레드로 돌아갑니다. 이제 계산 중에 사용될 때까지 완전히 해결되지 않는 데이터 요소가 있으며 이는 문제입니다.

LINQ가 주어진 시간에 작업을 완료하도록 강요하고 싶습니다 (설명의 끝? 끝? "나중에 비용을 지불하지 않는다는 것을 알 수 있습니다. LINQ의 끝에 ".TOLIST ()"를 추가하는 것은 1입니다. 어색하고 2. 어쨌든 다른 스레드에서 상자에 박힌 물건을 복싱하는 것과 같은 느낌이 듭니다.

도움이 되었습니까?

해결책

당신은 아무것도 권투하지 않을 것입니다 - 결과를 버릴 것입니다.

사용 ToList() 실제로 데이터를 원한다면 기본적으로가는 길입니다. 데이터를 즉시 사용할 준비가되지 않으면 버퍼링해야합니다. 어딘가에, 그렇지 않습니까? 목록은 편리한 방법 일뿐입니다.

대안은 처리를 수행하는 것입니다. 데이터를 제작대로 사용하여 간절히 사용하십시오. 나는 다른 스레드 측면을 따르지 않았으므로 그것이 당신을 도울 것인지는 분명하지 않지만 기본적으로 내가 볼 수있는 한 당신이 사용할 수있는 선택입니다.

이것은 실제로입니다 약간 설명에 명시 적 :

이 시점까지 디자인 모델은 데이터 수집 스레드를 보내 데이터를 찾는 것입니다. 완료하면 데이터가 계산을 위해 데이터를 전달하는 것입니다.

부름 ToList() 기본적으로 ""데이터 자체, 목록에 버퍼링 된 "요청시 데이터를 가져올 수있는 쿼리에서 반환 된 내용을 변경합니다.

다른 팁

왜 .Tolist가 허용되지 않는지 더 설명 할 수 있습니까? 권투와 개봉을 언급했지만 완전히 관련이없는 주제입니다.

LINQ 쿼리가 주문형을 완료하도록 강요하는 일부는 결과를 저장해야합니다. 그렇지 않으면 결과를 다시보기 위해서는 쿼리를 다시 처리해야합니다. .Tolist는 요소를 List<T>.

요소를 거의 다른 컬렉션 스타일 데이터 구조에 저장할 수 있으며 다양한 트레이드 오프가 필요할 수있는 다양한 트레이드 오프를 저장할 수 있습니다.

이있다 LoadOptions 속성 DataContext 데이터를 더 간절히 가져 오는 데 도움이 될 수있는 수업.

그렇지 않으면 몇 가지 영리한 배치를 사용할 수 있습니다 ToList() '에스.

나는이 스레드가 늙었다는 것을 알고있다 ... 어쨌든, 재미있는 사람은. 나는 LINQ가 쿼리 결과에 관심이없는 부작용을 주도하는 영광스러운 곳 이상의 일을하고 있습니다. 그래서 나는 필요한 것보다 더 많은 가짜 기억을 할당하고 싶지 않았습니다.

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