お前らおはよう。
C Sharp .net4、および MS Visual Studio 2010 を使用。
Windows フォーム プログラム用の重複チェッカーを開発しました。それは完全に機能し、数百のレコードがある場合、私のデータグリッドで事実上インスタントです。
私が気付いた問題は、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();
}
どんな質問でも私に知らせてください、そして、私はそれらに答えるために最善を尽くします.