데이터 세트 : 열거 및 FindByid는 동일한 Datarow를 반환하지 않습니다.

StackOverflow https://stackoverflow.com/questions/1043060

  •  20-08-2019
  •  | 
  •  

문제

내 코드의 오늘의 문제는 이상한 일이며 아직 재현 할 수 없었습니다. 타이핑 된 데이터 세트 (디자이너와 함께 생성)로 작업하고 있으며 DataTable의 모든 행을 루핑하고 있습니다.

때때로 (!), 기본 키를 통해 찾을 때, 반환 된 행은 열거기의 행과 같지 않습니다. 이것은 내가 문제를 재현하기 위해 쓴 몇 가지 코드입니다.

foreach(DataSet1.DataTable1Row dr in ds.DataTable1)
{
    if(ds.DataTable1.FindById(dr.Id) != dr)
        Console.Write(dr.Id);
}

FindByid는 항상 같은 행을 반환하기 때문에 콘솔에는 라인이 작성되지 않습니다. 내 프로젝트의 코드에서 문자열 열이 몇 개 인 유사한 데이터 세트가있는 행의 약 3% (항상 동일한 행으로!)가 그렇지 않으며 문자열 필드 중 하나가 비어 있습니다.

ds.DataTable1.FindById(dr.Id) != dr // returns false, for whatever reason

기본 키는 유일한 기본 키 필드이므로 FindById의 경우 생성 된 방법입니다. 작은 힌트를 아는 사람이 있거나 전에 같은 문제를 경험 한 사람이 있습니까? 이 버그 나 기능을 가능하게하는 매우 특별한 경우가 두렵습니다. :)

나는 열거 된 캐스트에 의해 생성 될 가능성에 대해 생각했다. 열거자는 함께 작동합니다 DataRow 생성 된 유형 행의 기본 유형. 하지만 나는 거기에서 뭔가 잘못된 것을 찾지 못했습니다 ...

마티아스를 건배합니다

도움이 되었습니까?

해결책

기본 키 유형은 무엇입니까? 데이터 세트에는 안내서 (및 기타 값)를 비교하기위한 미묘한 버그가 있습니다. 안내 오류는 특정 안내 값과 관련이 있으며 일반적으로 잘 작동합니다.

참고 : 버그가 있다고 말하면 버그 보고서가 수락되었음을 알고 있지만 수정되었는지 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top