2016-09-05 4 views
-1

일부 조건을 구문 분석하기 위해 동적 linq를 사용하고 있습니다. 나는 저장 프로 시저를 작성하고 그것을 동적으로 필터링하고 싶다. '포함'은 문자열과 함께 작동하지 않습니까?

내 절차 :

;WITH cte 
AS 
(
    SELECT 
     ID 
     ,[NO] 
     ,Firstname 
     ,Lastname 
     ,PersonalNO 
     ,ReferanceID 
     ,CAST('' AS VARCHAR(MAX)) AS ReferanceNO 
    FROM dbo.Employees WHERE ReferanceID IS NULL 
    UNION ALL 
    SELECT 
     c.ID 
     ,c.[NO] 
     ,c.Firstname 
     ,c.Lastname 
     ,c.PersonalNO 
     ,c.ReferanceID 
     ,CASE 
      WHEN ct.ReferanceNO = '' 
       THEN CAST(ct.[NO] AS VARCHAR(MAX)) 
       ELSE CAST(ct.[NO] AS VARCHAR(MAX)) 
      END 
    FROM dbo.Employees c 
     INNER JOIN cte ct ON ct.ID = c.ReferanceID 
) 
SELECT * FROM cte 

및 C#에서 나는이 프로 시저를 호출하고,

public List<Employees> GetEmployees(string searchValue, int skip, int pageSize, string sortColumn, string sortColumnDir) 
{ 
var query = DB.sp_GetConsultants().ToList(); 
var totalRecords = query.Count; 

query = query.Where(searchValue).ToList(); // if the searchValue is value 
//"PersonalNO.Contains(\"15\")" it filters, with this kind of value 
//"Lastname.Contains(\"fish\")" it dose not, but with "Fish" it does. Is the matter with uppercase? 
} 

와 나는 테이블에 사진 업로드 :

enter image description here

문제가 무엇입니까?

+0

전체'query' 목록의 내용을 인쇄하거나 디버거를 사용하여 열거하면 어떻게됩니까? 아마도 저장 프로 시저에 문제가있을 수 있으며 John Fisher도 포함되지 않은 것입니까? – ekolis

+0

죄송합니다. 다시 작성했습니다. – www1986

답변

1

string.Contains은 대소 문자를 구별합니다. 피시 (Fish)를 검색해도 "피쉬"를 검색하지 않으면 '피쉬'를 검색 할 수 있습니다. .NET에서는 대소 문자를 구분하지 않는 버전이있는 것 같지 않습니다 (옵션으로 대소 문자를 구분하지 않아도).

해결 방법으로 비교하기 전에 두 문자열을 모두 소문자 또는 대문자로 변환 할 수 있습니다 (ToLower/ToUpper). 그러나 라틴 문자가 아닌 특정 문자에는 몇 가지 문제가있을 수 있습니다.

데이터베이스 수준에서 비교를 수행하려는 경우 SQL Server에 문자열에 대/소문자 구분을 지정할 수있는 데이터 정렬 옵션이 있다고 생각합니다.

+0

정확한 정보를 만들고 싶습니다. 이 경우 string.Contains는 프로 시저가 끝날 때 .ToList()를 추가했기 때문에 대소 문자를 구분합니다.이 쿼리를 다시 작성하면 var query = DB.sp_GetConsultants(). AsQueryabla()는 대소 문자를 구분하지 않습니다. 나는 맞습니까? 그리고 만약 내가 왜? – www1986

+0

LINQ to SQL에 익숙하지는 않지만 AsQueryable()이 데이터베이스에서 검색을 수행한다고 생각합니다. 데이터베이스 정렬은 대소 문자를 구분하지 않을 수 있습니까? – ekolis

관련 문제