/ / Видалити рядок з таблиці даних - c #, asp.net

Видалити рядок з таблиці даних - c #, asp.net

Я хочу видалити кілька записів з DataTable Наприклад : у моєму випадку PaperId повторюється кілька разів.Я хочу, щоб видалити все Дубльовані записи.

Я написав код, але цикл дає помилку

        DataSet ds = new DataSet();
sqlDad.Fill(ds);
DataTable dt1 = new DataTable();
ds.Tables.Add(dt1);
dt1 = ds.Tables[0];
DataTable dt2 = new DataTable();
dt2 = dt1;
List<DataRow> rowsToDelete = new List<DataRow>();

foreach(DataRow dr in ds.Tables[0].Rows)
{
int r = ds.Tables[0].Columns.Count;
string x =  dr.ItemArray[0].ToString();
int counter = 0;
foreach (DataRow dr1 in ds.Tables[0].Rows)
{

if (x == dr1.ItemArray[0].ToString())
{
counter++;
}
if (counter > 1)
{
rowsToDelete.Add(dr1);
foreach (DataRow row in rowsToDelete)
{
dt2.Rows.Remove(row);
}
dt2.AcceptChanges();
rowsToDelete.Clear();
}

}

Відповіді:

1 для відповіді № 1

Використовуючи DefaultView Таблиці даних та встановлення порядку сортування у стовпчику, для якого ви не хочете, щоб повторення з'явилися. Ви можете зациклювати рядки та видаляти всі рядки після першого

// Work on the first table of the DataSet
DataTable dt1 = ds.Tables[0];
// No need to work if we have only 0 or 1 rows
if(dt1.Rows.Count <= 1)
return;

// Setting the sort order on the desidered column
dt1.DefaultView.Sort = dt1.Columns[0].ColumnName;

// Set an initial value ( I choose an empty string but you could set to something not possible here
string x = string.Empty;

// Loop over the row in sorted order
foreach(DataRowView dr in dt1.DefaultView)
{
// If we have a new value, keep it else delete the row
if(x != dr[0].ToString())
x = dr[0].ToString();
else
dr.Row.Delete();

}
// Finale step, remove the deleted rows
dt1.AcceptChanges();

1 для відповіді № 2

Спробуйте це

DataRow[] rows;
rows=dataTable.Select("UserName = "ABC""); // UserName is Column Name
foreach(DataRow r in rows)
r.Delete();

0 для відповіді № 3

Якщо ви хочете видалити весь рядок від Дані таблиці ,

спробуйте це

DataTable dt = new DataTable();  //User DataTable
DataRow[] rows;
rows = dt.Select("UserName = "KarthiK"");
foreach (DataRow row in rows)
dt.Rows.Remove(row);