2014-02-10 4 views
0

특수 기호 " '", datatable.select 처리 방법의 조건부 값 선택 방법? 예를 들면 다음과 같습니다. datatable.select ("name = 'test 's'"); 당신이 DataRow[] (DataTable.Select 등의 반환) 또는 CopyToDataTable를 원하는 경우에만 일치하는 행이 새로운 DataTable을 원하는 경우특수 기호가 데이터 테이블 선택 쿼리로 표시됩니다.

var filteredRows = from row in datatable.AsEnumerable() 
        where row.Field<string>("name") == "test's" 
        select row; 

이 그럼 당신은 ToArray를 사용하거나 단순히을 사용할 수

답변

2

나는 Linq-To-DataSet 사용합니다 foreach 이러한 열을 열거하십시오. 또한 DataTable.Select 함께있을 수

, 당신은 두 사람과 함께 아포스트로피를 탈출해야합니다

datatable.Select(string.Format("name ='{0}'", "test's".Replace("'","''"))); 
+0

이 표현식에서 name = 'test 's'인 경우 테스트 구문에 단일 인용 부호가있어서 구문 오류가 발생합니다. 이 문제를 해결하는 방법 – kyno

+0

Tim, 나는 그의 문자열이'test's'''''''''''''checky'y'라고 생각합니다. –

+0

예, 값은 'test'가 아닌 test입니다. 나는 시도 : datatable.Select (string.Format ("name = '{0}',"test 's ".Replace (" ' ","' "))));하지만 올바르지 않다. – kyno

2

DataTable.Select methodDataColumn.Expression property와 같은 표현 규칙을 사용합니다.

문서화;

사용자 정의 된 값

사용자 정의 값 표현식에서 사용될 수는 열 값과 비교한다. 문자열 값은 따옴표 ()로 묶어야하며 문자열 값이 각각 인 각 작은 따옴표 문자는 다른 작은 따옴표 문자 앞에 붙여서 이스케이프 처리해야합니다.

당신의 문자열이 처음은 당신이 당신의 문자열을 둘러싸 다른 따옴표를 사용한다, 당신의 문자열 내부에 따옴표를 탈출 각각 다른 작은 따옴표를 사용해야 test's 경우.

좋아요;

datatable.select("name = 'test''s'"); 

또한 팀 suggestedString.Format 방법을 사용하는 것이 더 명확 수 있습니다. 처럼;

datatable.Select(string.Format("name ='{0}'", "test's".Replace("'","''"))); 
//Stolen from Tim's answer :) 
관련 문제