2013-12-16 4 views
4

웹 응용 프로그램에서 Linq To 개체 쿼리를 데이터 추출/통합 할 수 있습니다. 디버깅을 쉽게하기 위해 생성 된 HTML linq 쿼리 구조에 직접 보여주고 싶습니다. something likeLinq 개체 쿼리에 문자열 표현을 가져 오기

Bananas 
    ->Where color='blue' 
    ->Where size>'20cm' 
    ->Take 25 

실제로 표현 트리를 나타냅니다.

가능합니까? 방법?

+0

가능한 복제본 [convert-expression-tree-to-source-code-string] (http://stackoverflow.com/questions/1402839/convert-an-expression-tree-to-source-code- string) – nawfal

답변

1

ToString을 쿼리에 그냥 부르면됩니다. 당연히 IEnumerable이 아닌 AsQueryable 확장 방법을 사용하여 IQueryable 문자열을 작성해야합니다.

이 예 :..

선택 System.Int32 [(N => ((N % 2) == 0)) 가라 (25

var list = new int[] { 1, 2, 3, 4, 5 }; 

var query = list.AsQueryable() 
    .Where(n => n % 2 == 0) 
    .Take(25); 

string querystring = query.ToString(); 

이 문자열을 수득 당신이보다는, you can handle it on your own을이 기본 서식을 사용하는 것보다, 자신의 특정 형식을 가지고 있지만, 그 벌레의 꽤 큰 깡통을 여는 것이 중요 경우)

; 그게 네가하고 싶은 일이라면 네가 정말로 필요로하는지 확인해.

+0

Roy가 제공 한 솔루션은 내 필요에 맞을 수 있지만이 방법은 훨씬 간단 해 보입니다! 감사 – eka808

2

당신도 할 수 있지만, 독자적인 표현 트리 방문자 (ExpressionVisitor에서 파생 된 클래스)를 작성해야합니다. 즉, LINQ 쿼리 인 식 트리를 통과하고 원하는 문자열을 작성하는 코드를 작성해야합니다.

표현 트리 방문자에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/bb882521(v=vs.90).aspx을 참조하십시오.

실제로 이미 대부분의 작업을 수행하는 웹에서 매우 흥미로운 예제있다 : http://pelebyte.net/blog/2011/05/13/doing-simple-things-with-expressionvisitor/

0

로이의 대답에서에서 다음을 ALOS 같은 문제를 다룹니다하지만 CodePlex의 프로젝트는 actally 전체 식 트리가 보여줍니다 일반 영어뿐만 아니라 결과 최종 LINQ 표현 :

http://exprtreevisualizer.codeplex.com/

이 실제로 내가 고백해야 그래도, 내가 vs2012에서 시도하지 않은하지만 인식되어 왔고, 좋은 작은 도구처럼 보인다 2010 년 vs2010에서 보았다. 나는 vs2012를위한 확장 버전이 만들어 졌는지 확신하지 못합니다. 그러나 이것은 확실히 당신이 언급 한 것입니다.

관련 문제