2017-11-21 2 views
-7

사용자가 해당 값에 대한 입력을 제공하면 where 절을 쿼리에 추가해야합니다. 지금까지 나는 follow를 사용하려고 시도하고 있지만 where 절은 무시됩니다. 그 말은 루이스로 시작하는 성 (姓)을 가진 학생 만 반환해야하지만 그 결과로 얻지는 못한다는 의미입니다. 내가 할LINQ 메서드 구문이있는 where 절을 무시합니다.

  var query = db.STUDENT 
      .Where(x => x.STUDENT_CHANGE_IND == null); 

     if (!string.IsNullOrEmpty(lastName)) query.Where(x => x.STUDENT_LAST_NAME.StartsWith("Lewis")); 
     if (!string.IsNullOrEmpty(firstName)) query.Where(x => x.STUDENT_FIRST_NAME.StartsWith(firstName)); 
     if (!string.IsNullOrEmpty(spridenId)) query.Where(x => x.STUDENT_ID.Contains(spridenId)); 

     var y = query.Take(10).ToList(); 

결과는 다음과 같습니다

Student ID LastName 

002 GUAR - HEMAR  
021 GUAR - Citibank SLC 
08092017 DO NOT USE 92 number mess up  
099 GUAR - ChaseJPM 
161 GUAR - WELLSG 
191 GUAR - TERI 
+2

'쿼리 = query.Where이 (...'당신이해야 할 것입니다 그것이 물론 –

+0

을 - 당신은 결과를 저장하지 않는 어디서나. – EJoshuaS

+0

사실 C#에서는 아무것도 작동하지 않습니다. https://www.bing.com/search?q=c%23+linq+where+does+not+work 또는 [C# 문자열 바꾸기가 작동하지 않습니다.] (https://stackoverflow.com/questions/13277667/c-sharp-string-replace-does-not-work). –

답변

6

당신은 만약 그들이 단지

query.Where(x => x.STUDENT_LAST_NAME.StartsWith("Lewis")); 
+0

오, 이런. 이마 야자. 물론 수정 된 값을 캡처해야합니다. 고맙습니다! –

+0

@CindyConway 경우에 따라 모든 사람에게 일어남 :) –

2

절을 쌓아 두지 않는 경우 대신

query = query.Where(x => x.STUDENT_LAST_NAME.StartsWith("Lewis")); 

을 말할 필요 별도의 작업에서 호출됩니다. 필터링 된 목록으로 작업하고 있는지 확인하기 위해 Where() 문을 실행할 때마다 새 결과를 저장해야합니다.

업데이트 된 논리는 다음과 같이 보일 것이다.

var query = db.STUDENT.Where(x => x.STUDENT_CHANGE_IND == null); 

if (!string.IsNullOrEmpty(lastName)) 
{ 
    query = query.Where(x => x.STUDENT_LAST_NAME.StartsWith("Lewis")); 
} 
if (!string.IsNullOrEmpty(firstName)) 
{ 
    query = query.Where(x => x.STUDENT_FIRST_NAME.StartsWith(firstName)); 
} 
if (!string.IsNullOrEmpty(spridenId)) 
{ 
    query = query.Where(x => x.STUDENT_ID.Contains(spridenId)); 
} 

var y = query.Take(10).ToList(); 
+0

edited, thanks @EdPlunkett –

관련 문제