私はこのコードの塊を持っています:
DataTable dt = new DataTable();
dt.Columns.Add("Status");
dt.Columns.Add("File");
dt.Columns.Add("Revision");
int i = 0;
foreach (SvnStatusEventArgs status in statuses) // statuses is a Collection
{
dt.Rows.Add();
switch (status.LocalContentStatus)
{
case SvnStatus.NotVersioned:
dt.Rows[i]["Status"] = "Not Versioned";
break;
default:
dt.Rows[i]["Status"] = status.LocalContentStatus.ToString();
break;
}
dt.Rows[i]["File"] = status.Path;
foreach(SvnInfoEventArgs info in infos) //infos is a Collection
{
if (status.Path.Equals(info.Path))
{
dt.Rows[i]["Revision"] = info.Revision;
break;
}
}
i++;
}
statuses
infos
ただし、それぞれ最大 20,000 行を保持できるため、ネストされた foreach には長い時間がかかる可能性があります。
これらのコレクションをリストに変換してから、両方を並べ替えようとすると、これを高速化できると思いましたPath
。
Sort メソッドのMSDN ページを見ても、Path
SvnStatusEventArgs[n] と SvnStatusEventArgs[n+1] のフィールドを比較する方法がわかりません。それから、これらのオブジェクトのグループの両方を全体的に反復処理し、とにかくそれらをソートするので、それは既存のコードよりも本当に効率的でしょうか? n*n ではなく n*2 になると思いますよね?
価値があるのは、Path
並べ替えようとしているフィールドは単なる文字列です。