동적 인 WHERE 절을 생성하기 위해 표준 방문자 패턴을 사용하여 LINQ 표현식 트리를 반복합니다.LINQ 표현식 트리에서 독립형 부울 표현식을 평가하는 방법
내 문제는 C#과 달리 SQL에서 독립 실행 형 불린 식을 사용할 수 없다는 것입니다.
WHERE Enabled OR Enabled = 0
또는이 코드 :
h => h.Enabled || h.Enabled == false
잘못이 코드를 생성하기 쉬운 것입니다 : 당신은이 가상 람다 식을 감안할 때 1 또는 0
과 비교해야
WHERE (Enabled = 1) OR (Enabled = 1) = 0
둘 다 물론 SQL 오류가 발생합니다. 어떤 경우인지 파악하기 위해 하위 트리를 자세히 조사 할 때 코드가 정말 둔하게 보이지 않고이 문제를 해결하기 위해 어떤 논리를 적용해야합니까?
편집 : 위의 예는 물론 중복되어 있습니다. - 요점을 설명하기 위해서만 사용하고 있습니다. 이 시나리오 만들 수
예 : 당연히
h => h.Enabled
h => h.Enabled == enabled
h => h.Enabled == true
을 내 코드가 중복 시나리오에 대한 수용하지에, 그래서 프로그래머의 기술 수준의 독립적으로 작동하도록 설계되고 가난한 스타일이지만, 마지막 예 것 내 부분에서 형편이 나쁘다.
안녕 나는 동일한 것을 달성하는 것을 시도하고있다. 이해 좀 도와 주시겠습니까? 예를 들어 하나의 표현식에 2 개의 다른 부울 표현식이있는 경우 x => x.IsBool || x.IsBool == tue. MemberExpressions를 방문하면이 코드 'WHERE IsBool = 1 OR IsBool = 1 = 1'이 발생합니다. 하나의 membereexpression이 redudant part와 다른 것을 구분하는 방법은 명시 적입니까? – DolceVita