Утренние ребята.Улучшить метод повторной проверки
Используя диез .net4 и MS Visual Studio 2010.
Я разработал дублирования проверки моего окна формы программы. Он работает отлично и практически мгновенно на моем Datagrid, когда есть несколько сотен записей.
Проблема, которую я заметил, заключается в том, что при наличии 6000 записей она недостаточно эффективна и занимает минуты.
Я блуждал, если у кого-то есть хорошие советы, чтобы сделать этот метод намного быстрее, либо улучшив существующий дизайн, либо другой метод, который я уже просматривал.
Ваша помощь в очередной раз ценится!
Вот код:
public void CheckForDuplicate()
{
DataGridViewRowCollection coll = ParetoGrid.Rows;
DataGridViewRowCollection colls = ParetoGrid.Rows;
IList<String> listParts = new List<String>();
int count = 0;
foreach (DataGridViewRow item in coll)
{
foreach (DataGridViewRow items in colls)
{
count++;
if ((items.Cells["NewPareto"].Value != null) && (items.Cells["NewPareto"].Value != DBNull.Value))
{
if ((items.Cells["NewPareto"].Value != DBNull.Value) && (items.Cells["NewPareto"].Value != null) && (items.Cells["NewPareto"].Value.Equals(item.Cells["NewPareto"].Value)))
{
if ((items.Cells["Part"].Value != DBNull.Value) && (items.Cells["Part"].Value != null) && !(items.Cells["Part"].Value.Equals(item.Cells["Part"].Value)))
{
listParts.Add(items.Cells["Part"].Value.ToString());
dupi = true; //boolean toggle
}
}
}
}
}
MyErrorGrid.DataSource = listParts.Select(x => new { Part = x }).ToList();
}
Любые вопросы, дайте мне знать, и я сделаю все возможное, чтобы ответить на них.
Один простой оптимизация, который не изменит свой код много, не выглядит все столбцы в два раза, внешний контур петли все из них, внутренний контура петли от того, где внешнего контура есть, до конца –
кроме того. Ячейки ["NewPareto"] - это поиск строк. Как насчет того, что вы получите NUMBER один раз за пределами цикла (таблицы не будут меняться в цикле), а затем получить доступ через номер? – TomTom
yer Исходная причина: я зацикливаюсь, чтобы получить 1-е значение, а затем используя его в качестве базы, я проверяю все остальные значения через второй цикл, чтобы увидеть, есть ли совпадение. – lemunk