當前位置:成語大全網 - 書法字典 - C#篩選數據表中的同壹行(gethashcode)

C#篩選數據表中的同壹行(gethashcode)

寫壹個方法

///& lt;總結& gt

///執行Select distinct後返回數據表。

///& lt;/summary & gt;

///& lt;param name = " SourceTable " & gt源數據表

///& lt;param name = " FieldNames " & gt字段集

///& lt;returns & gt& lt/returns & gt;

私有數據表SelectDistinct(數據表源表,參數字符串[]字段名稱)

{

object[]last values;

DataTable newTable

DataRow[]ordered rows;

if(field names = = null | | field names。長度== 0)

拋出新的ArgumentNullException(" field names ");

lastValues =新對象[字段名稱。長度];

new table = new DataTable();

foreach(字段名中的字符串字段名)

新表格。Columns.Add(fieldName,SourceTable。列[字段名稱]。數據類型);

orderedRows = SourceTable。選擇(",字符串。Join(",",field names));

foreach(ordered rows中的DataRow行)

{

如果(!fieldValuesAreEqual(最後值,行,字段名))

{

新表格。Rows.Add(createRowClone(row,newTable。NewRow()、field names));

setLastValues(lastValues,row,field names);

}

}

返回newTable

}

private bool field values saree equal(object[]last values,DataRow currentRow,string[] fieldNames)

{

bool areEqual = true

for(int I = 0;我& lt字段名稱。長度;i++)

{

if (lastValues[i] == null ||!lastValues[i]。equals(current row[field names[I]]))

{

areEqual = false

打破;

}

}

回報是平等的;

}

私有數據行createRowClone(數據行源行,數據行新行,字符串[]字段名稱)

{

foreach(字段名中的字符串字段)

newRow[field]= source row[field];

返回newRow

}

private void setLastValues(object[]last values,DataRow sourceRow,string[] fieldNames)

{

for(int I = 0;我& lt字段名稱。長度;i++)

last values[I]= source row[field names[I]];

}