저는 단지 인터넷에 가장 널리 퍼진 내용이 반드시 옳은 것은 아니라는 점을 모두에게 말씀드리고 싶습니다.
두 DataTable이 동일한지 확인하는 방법에 대해 Google을 검색하고 싶습니다. 가장 일반적인 방법은 다음 방법입니다.
암호
private bool ValueEquals(DataTable objA,DataTable objB)
{
if(objA != null && objB != null)
{
if(objA.Rows.Count != objB.Rows.Count)
{
거짓을 반환;
}
if(objA.Columns.Count != objB.Columns.Count)
{
거짓을 반환;
}
}
DataView dv = new DataView(objB);
문자열 키 = "";
foreach(objA.Columns의 DataColumn col)
{
키 += ","+col.ColumnName;
}
dv.Sort = 키.하위 문자열(1);
foreach(objA.Rows의 DataRow 행)
{
if(row.RowState != DataRowState.Deleted)
{
if(dv.Find(row.ItemArray)<0)
{
거짓을 반환;
}
}
또 다른
{
거짓을 반환;
}
}
사실을 반환;
}
이 코드의 작성자를 확인할 수는 없지만 소문이 많이 있습니다.
이를 재인쇄한 사람이 이 방법의 정확성을 검증한 것인지, 아니면 그냥 재인쇄한 것인지는 모르겠습니다.
이 방법은 실제로 잘못되었습니다.
두 DataTable의 행과 열 수가 동일하지만 첫 번째 행은 동일하고 두 번째 행은 다른 경우 위의 비교 방법은 여전히 True를 반환합니다.
저를 포함한 대다수의 사람들에게 인터넷에 가장 많이 유포되는 내용이 꼭 맞는 것은 아니라는 점을 말씀드리고자 글을 씁니다. 재인쇄할 때 내용의 정확성을 확인해 주시기 바랍니다. 나에게 좋은 것은 남에게도 좋은 것입니다.
제가 처음으로 올리는 글입니다. 제가 말하는 내용이 틀렸다면 추천하지 않으셨으면 좋겠습니다.
또한 전문가가 두 DataTable이 동일한지 비교하는 정확하고 효율적인 방법을 제공할 수 있기를 바랍니다.
좀 더 구식적인 방법을 사용했어요
암호
공개 bool DataTableTheSame(DataTable Table1, DataTable Table2)
{
if (테이블1 == null || 테이블2 == null)
{
거짓을 반환;
}
if (Table1.Rows.Count != Table2.Rows.Count)
{
거짓을 반환;
}
if (테이블1.열.카운트 != 테이블2.열.카운트)
{
거짓을 반환;
}
for (int i = 0; i < Table1.Rows.Count; i++)
{
for(int j = 0; j < Table1.Columns.Count; j++)
{
if (Table1.Rows[i][j].ToString() != Table2.Rows[i][j].ToString())
{
거짓을 반환;
}
}
}
사실을 반환;
}