2009-04-29 3 views
0

임시 질의 화면을 지원하기 위해 SqlQuery를 빌드하고 있습니다.SubSonic 2.1 SqlQuery multiple 여기서() s?

나는 이런 식으로 뭔가 싶어 :

SqlQuery q = new Select().From<VwInstitutes>(); 
if (!string.IsNullOrEmpty(username)) 
{ 
    q.Where(VwInstitutes.Columns.AssignedUser).IsEqualTo(username); 
} 

if (!string.IsNullOrEmpty(stage)) 
{ 
    q.Where(VwInstitutes.Columns.Stage).IsEqualTo(stage); 
} 

내 문제입니다 (-)의 작동하지 않는 것 다수를 연결하는 - 즉, 정확을?

그래서 지금이 글을 쓰고 있지만 꽤 추합니다.

if (!string.IsNullOrEmpty(username)) 
{ 
    if (q.HasWhere) q.And(VwInstitutes.Columns.AssignedUser).IsEqualTo(username); 
    else q.Where(VwInstitutes.Columns.AssignedUser).IsEqualTo(username); 
} 

if (!string.IsNullOrEmpty(stage)) 
{ 
    if (q.HasWhere) q.And(VwInstitutes.Columns.Stage).IsEqualTo(stage); 
    else q.Where(VwInstitutes.Columns.Stage).IsEqualTo(stage); 
} 

이 시나리오에서는 더 나은 관용구가 있음을 알려주십시오. 감사!

답변

1

항상 true로 평가되는 위치로 쿼리를 시작하십시오.

new Select().From().Where("1").IsEqualTo("1"); 

그런 다음 q.And를 사용하여 나머지 쿼리를 작성하십시오. this thread도 참조하십시오.

+0

감사합니다. 네, 오래된 SQL 트릭을 잊어 버렸습니다. 나는 쿼리의 의미에 기여하지 않는다는 점에서 약간 추한 것 같지만, 내가하는 것처럼 못생긴다. 연결된 스레드의 포스터처럼 AddWhere() ....에 무슨 일이 일어 났는지 궁금합니다. –