2011-10-03 2 views
4

LinqPad를 사용하여 OData 쿼리를 실행하면 표준 3 레벨 이상의 중첩/확장이 필요할 수 있습니다..Dump (#)를 사용하면 왜 내 결과가 두 배가됩니까?

더 많은 중첩 수준을 얻으려면 Dump(int nestingLevel)으로 전화를 걸 수 있습니다.

하지만 그렇게하면 두 개의 결과 집합을 얻습니다. (하나는 확장 된 중첩을 사용하고 하나는 .Dump 호출없이 사용합니다.)

왜 그런가요? 내가 그걸 끌 수있는 방법이 있니?

는 예를 들어 http://data.stackexchange.com/stackoverflow/atom에 연결하고이 쿼리를 실행합니다

Posts.Take(1).Select(x=>new{x.Title}).Dump(1) 

당신은 두 개의 동일한 결과 집합을 얻을 것이다. 이처럼 :

LinqPad Double

답변

6

당신이 C# Expression 쿼리를 실행 쿼리의 결과가 자동으로 덤프됩니다.

LINQPad는 외부로 돌아 가기 전에 Dump() 전화를 객체를 생성 덤핑하고 그래서

LINQPad.Dump(
    //Your code here 
); 

당신의 코드가 너무 Dump() 호출하는 코드를 컴파일합니다.
당신은 단지 C# Statements (또는 그 이상) 쿼리에 Dump() 필요하거나 다른 뭔가를 덤프하려면

(Dump()는 체인 수 있도록 인수를 반환).

관련 문제