Проверить дубликаты строк GridEX с Linq не работает
У меня есть два Януса GridEX. Когда нажата определенная кнопка, я хочу добавить строки первой сетки в другую сетку; но я хочу проверить, что эти строки уже не существуют во второй сетке, поэтому я использовал этот блок кода с linq:
DataTable dtSelectedRows = new DataTable();
dtSelectedRows = firstGrid.GetDataSource().Clone();
foreach (GridEXRow row in rows)
{
DataRow dr = ((DataRowView)row.DataRow).Row;
if (dtSelectedRows.AsEnumerable().Count() > 0)
{
if (dtSelectedRows.AsEnumerable().Where(t => t.Field<Int32>("myColumn") == Convert.ToInt32(dr["myColumn"])).Count() == 0)
{
dtSelectedRows.ImportRow(dr);
}
}
else
dtSelectedRows.ImportRow(dr);
}
}
secondGrid.SetDataSource(dtSelectedRows);
но, к сожалению, это не сработало и dtSelectedRows всегда пусто. Поэтому я вынужден переписать блок как:
GridEXRow[] rows = firstGrid.GetCheckedRows();
DataTable dtSelectedRows = new DataTable();
dtSelectedRows = firstGrid.GetDataSource().Clone();
foreach (GridEXRow row in rows)
{
if (row.RowType == Janus.Windows.GridEX.RowType.Record)
{
DataRow dr = ((DataRowView)row.DataRow).Row;
bool rowExists = false;
foreach (DataRow r in dtSelectedRows.Rows)
{
if (Convert.ToInt32(r["myColumn"]) == Convert.ToInt32(dr["myColumn"]))
{
rowExists = true;
break;
}
}
if (!rowExists)
dtSelectedRows.ImportRow(dr);}
}
secondGrid.SetDataSource(dtSelectedRows);
и к счастью это просто сработало. Так как я могу исправить первый блок кода?
1 ответ
Попробуй это:
dtSelectedRows = firstGrid.GetDataSource().AsEnumerable().ToList();
вместо:
dtSelectedRows = firstGrid.GetDataSource().Clone();