2010-05-14 2 views
7

SQL 문자열을 식 트리로 변환하는 방법이 궁금합니다. 현재 Linq to SQL에서 표현식 트리는 SQL 문으로 변환됩니다. 다른 방향으로가는 방법은 무엇입니까? 어떻게하면식 트리에 대한 SQL 문

select * from books where bookname like '%The%' and year > 2008 

을 C#의 표현 트리로 번역하겠습니까?

+0

이 질문에 대한 해결책을 찾았습니까? 나는 또한 C에서 SQL 문자열에서 표현 트리를 얻고 싶습니다 # – Saravanan

답변

0

http://weblogs.asp.net/rajbk/archive/2007/09/18/dynamic-string-based-queries-in-linq.aspx

갱신

엔티티 프레임 워크는 법인 SQL 언어를 가지고있다. 그게 네가 원하는지 확실하지 않은 경우.

http://msdn.microsoft.com/en-us/library/bb738521.aspx

+0

음 ... 일종의. 동적 Linq는 linq 람다 표현식 인수를 문자열로 지정할 수 있지만 linq 문의 확장 메서드 (.Select, .Where)를 직접 지정해야합니다. –

+0

동적 linq를 사용하지 않는 것이 좋겠지 만 System.Linq.Expressions에서 완전히 빌드 한 것입니다. –

0

내가 그물의 표현 나무을 몰랐던로 (쉬운 방법이 있는지 모르겠어요,하지만 난 정의 추상 구문 트리에 SQL 식에 대한 렉서와 파서를 썼다 그 당시 저는 SQL 구문 분석을 정말 좋아하지 않았습니다.

순서는 문맥에 따라 다른 같은 구문은 단지 매우 친절 구문 분석하지 않습니다 (예 : NOT INIS NOT가 아닌) 목록을 만들기위한 괄호 대 기본 연산자 우선 순위를 오버라이드 (override)에 대한 토큰 오버로드 (괄호 WHERE x IN (1, 2)에서와 같이).

필자 고유의 렉싱 및 구문 분석을 수행하는 대신 파서 생성기를 사용하면 더 쉽게 작업 할 수 있지만 SQL에 더 구체적인 것이 있는지는 알 수 없습니다.

그래서 자신 만의 글쓰기는 지루할지라도 분명히 가능합니다.