2012-02-15 8 views
2

프리즘 연습을 사용하는 실버 라이트 앱이 있습니다. 현재 코드는 이름이나 성 또는 성별로 검색합니다. 이름을 재검토, 3 문자처럼 somethng 코드를 변경하고 싶습니다. 지금은 하나의 문자가 발견되면 검색하고 있기 때문에 이름이 표시되어 문제를 볼 수 있습니다. 코드를 조정하여 여기에있는 코드 만 선택할 수 있습니까? 3 개의 성냥? 3 미만의 이름 문제는 홀로 남겨 둘 수 있지만 그때는 아무 것도 허용 할 수 있습니다.Silverlight에서 C#으로 이름 인식하기

내가 제대로 귀하의 요구 사항 및 샘플 코드를 읽은 경우
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace PBM.Web.Classes 
{ 
    public class Search 
    { 
     public static IQueryable<Patient> GetSearchQueryPatient(IQueryable<Patient> pSearchQuery, Patient pPatient) 
     { 
      if (!string.IsNullOrEmpty(pPatient.FirstName)) 
      { 
       pSearchQuery = pSearchQuery.Where(item => item.FirstName.Contains(pPatient.FirstName)); 
      } 

      if (!string.IsNullOrEmpty(pPatient.LastName)) 
      { 
       pSearchQuery = pSearchQuery.Where(item => item.LastName.Contains(pPatient.LastName)); 
      } 

      if (pPatient.Gender.HasValue && pPatient.Gender.Value > 0) 
      { 
       pSearchQuery = pSearchQuery.Where(item => item.Gender.Value == pPatient.Gender.Value); 
      } 

      pSearchQuery = pSearchQuery.OrderBy(item => item.FirstName).ThenBy(item => item.LastName); 

      return pSearchQuery; 
     } 
    } 
} 

답변

1

, 간단하게 작동합니다 당신의 검사 결과에 길이 검사를 추가

if (!string.IsNullOrEmpty(pPatient.FirstName) && pPatient.FirstName.Length > 2) 
{ 
    pSearchQuery = pSearchQuery.Where(item => item.FirstName.Contains(pPatient.FirstName)); 
} 

그것은 의미 하는가 그 이름은 3 자 미만을 경우 는 전혀 일치하지 않으므로이 검색에서 아무 것도 반환하지 않았는지 확인한 다음 단순한 길이 검색을 수행하지 않는 경우 확인하십시오.

if (!string.IsNullOrEmpty(pPatient.FirstName)) 
{ 
    // First look for a 3 or more character match 
    if (pPatient.FirstName.Length > 2) 
    { 
     pSearchQuery = pSearchQuery.Where(item => item.FirstName.Contains(pPatient.FirstName)); 
    } 
    // If didn't find anything do the simple search 
    if (!pSearchQuery.Any()) 
    { 
     pSearchQuery = pSearchQuery.Where(item => item.FirstName.Contains(pPatient.FirstName)); 
    } 
} 
+0

그러면 문제가 될 수 있습니다. 마지막 이름이 2 이상인 경우 3을 검색한다고 말할 수 없으면 이전 검색을 수행하십시오. –

+0

@PinchasK - 그게 효과가있다. 답변을 업데이트하겠습니다. – ChrisF

관련 문제