2009-05-22 6 views
4

webservice 및 Linq To Sql을 사용하여 데이터베이스에 액세스하는 자동 완성 검색을 수행하려고합니다.Linq to SQL 검색 여러 열 및 여러 단어

여기 내 코드입니다. 이렇게하면 모든 검색어와 일치하는 결과가 표시되므로 각 결과에 모든 검색어가 포함되도록 수정하고 싶습니다.

나는 SQL 전체 텍스트 검색이 아마도 가장 우아한 해결책이라는 것을 알고 있지만이 기능이 데이터베이스를 수정하지 않고 가능한지 알고 싶습니다.

string[] searchTerms = searchString.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).ToArray(); 
     IQueryable<AccountResult> results = db.cdAccounts 
      .Select(x => 
       new AccountResult() 
       { 
        idAccount = x.id_Account, 
        AccountName = x.AccountNme, 
        AccountNumber = x.AccountNum 
       }).Distinct().OrderBy(x => x.AccountName); 
     foreach (string searchTerm in searchTerms) 
      results = results.Where(x => x.AccountName.Contains(searchTerm) || x.AccountNumber.Contains(searchTerm)); 

     return results.OrderBy(x => x.AccountName).Take(40).ToList(); 
+0

내가 이상적인 솔루션이라고 생각했는데 이제는 방법에 대한 첫 번째 검색어 기간이 지난 후에 Linq로 검색하고 검색 용어가 두 개 이상인 경우 db 및 필터의 초기 결과를 사용합니다. 두 번째, 세 번째 등의 용어와 일치하지 않는 결과 조금 추한, 그러나 충분히 빠르다. 아직 제안이 없습니다. – KClough

답변

1

필자는 linq를 사용하여 주먹절을 검색 한 다음 여러 용어가있는 경우 결과를 얻었습니다. 나는 개선/최적화에 열려 있습니다.

0

linq to sql은 잘 모르지만 결과에 추가해야 할 때마다 루프마다 결과를 다시 할당하는 것처럼 보입니다.

+0

결과를 필터링하려고합니다. 코드 의사 : 첫 번째 루프 : Results.Where X가 '123' 두 번째 루프 결과를 포함는 (여기서 x 포함 '123') (여기서 X '456'포함) 의미를 합니까를? – KClough