private DataRow[] GetResultRows(DataTable dt, DataRowState State)
{
//get expected rows
ArrayList al = new ArrayList();
DataRowVersion drVer = DataRowVersion.Current;
//From MSDN - The row the default version for the current DataRowState.
// For a DataRowState value of Added, Modified or Current,
// the default version is Current.
// For a DataRowState of Deleted, the version is Original.
// For a DataRowState value of Detached, the version is Proposed.
if (((State & DataRowState.Added) > 0)
| ((State & DataRowState.Modified) > 0)
| ((State & DataRowState.Unchanged) > 0))
drVer = DataRowVersion.Current;
if ((State & DataRowState.Deleted) > 0
| (State & DataRowState.Detached) > 0)
drVer = DataRowVersion.Original;
foreach (DataRow dr in dt.Rows)
{
if (dr.HasVersion(drVer)
//&& ((int)dr["ParentId", drVer] == 1)
&& ((dr.RowState & State) > 0)
)
al.Add(dr);
}
DataRow[] result = (DataRow[])al.ToArray((typeof(DataRow)));
return result;
}