문제

LINQ 쿼리에서 반환되는 데이터 테이블에서 런타임에서 내 트리 뷰를 보조하려고합니다. 반환 된 필드는 다음과 같습니다.

이름 = casenoteid | ContactDate | ParentNote Type = Guid | DateTime | 안내

ParentNote 필드는 Casenoteid 열의 항목과 일치합니다. Select (필터)는 나에게 런타임 오류를 제공합니다. 열 [EA8428E4]을 찾을 수 없습니다. 그 영숫자는지도 중 하나의 첫 번째 섹션입니다. 내 코드 필터 =를 밟을 때 "ParentNote=ea8428e4-1274-42e8-a31c-f57dc2f189a4"

내가 무엇을 놓치고 있습니까?

var tmpCNoteID = dr["CaseNoteID"].ToString();
                var filter = "ParentNote="+tmpCNoteID;

                DataRow[] childRows = cNoteDT.Select(filter);
도움이 되었습니까?

해결책

단일 따옴표로 안내서를 둘러보십시오.

var filter = "ParentNote='"+tmpCNoteID+"'";

다른 팁

이것은 작동해야합니다 :

   var tmpCNoteID = dr["CaseNoteID"].ToString();
                var filter = "ParentNote=\""+tmpCNoteID+"\"";

                DataRow[] childRows = cNoteDT.Select(filter);

나는 이것이 오래된 스레드라는 것을 알고 있지만 부록을 추가하고 싶었습니다. Guid (예 : ParentNote In (, 등))과 함께 IN 연산자를 사용하면 더 이상 인용이 허용되지 않습니다. 이 경우 변환 방법 (granadacoder가 제안)이 필요합니다. (단일 따옴표는 안내서를 문자열과 '='연산자와 비교하는 것에 대한 예외가 발생합니다.

세부: 형식으로 큰 필터 문자열을 구축 한 일부 레거시 코드를 상속했습니다. MyColumn = '11111111-2222-3333-4444-555555555555' OR MyColumn = '11111111-2222-3333-4444-555555555555' ....

안내 수 (따라서 조항 수)가 너무 커질 때 스택 오버플로 예외가 발생했습니다. 수많은 조항을 IN 절로 교체함으로써 예외없이 필터를 설정할 수있었습니다. 그러나 CONC를 사용한다는 것은 변환 접근법을 사용해야한다는 것을 의미합니다.

다음은 내가 사용하는 한 가지 방법입니다.

            MyStrongDataSet ds = new MyStrongDataSet();
            Guid myUuid = new Guid("11111111-2222-3333-4444-555555555555");

            System.Data.DataRow[] rows = ds.MyStrongTable.Select("MyGuidProperty = (CONVERT('" + myUuid.ToString("N") + "', 'System.Guid'))");


            //Fish out a single row if need be and cast to a strong row
            if (null != rows)
            {
                if (rows.Length > 0)
                {
                    MyStrongDataSet.MyStrongTableRow returnRow = rows[0] as MyStrongDataSet.MyStrongTableRow;
                    return returnRow;

                }
            }
            return null;

여기에 약간의 변형이 있습니다.

  string filterSql = "MyGuidProperty ='{0}'";

  filterSql = string.Format(filterSql, Guid.NewGuid().ToString("D"));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top