そのため、処理して 1 つのリストにマージしようとしているいくつかの異なるリストがあります。
以下は、より良い方法があるかどうかを確認したいコードのスニペットです。私が尋ねている理由は、これらのリストのいくつかはかなり大きいからです。これを行うより効率的な方法があるかどうかを確認したいと思います。
ご覧のとおり、リストをループ処理しています。最初に、CompanyId がリストに存在するかどうかを確認します。そうであれば、処理しようとしているリスト内の項目を見つけます。
pList は私の処理リストです。さまざまなリストの値をこのリストに追加しています。
Exist と Find を達成するための「より良い方法」があるかどうか疑問に思っています。
boolean tstFind = false;
foreach (parseAC item in pACList)
{
tstFind = pList.Exists(x => (x.CompanyId == item.key.ToString()));
if (tstFind == true)
{
pItem = pList.Find(x => (x.CompanyId == item.key.ToString()));
//Processing done here. pItem gets updated here
...
}
補足として、結合を使用してそれがより高速かどうかを確認する方法を調査します。しかし、私はまだそこにたどり着いていません。上記のコードは、この問題を解決するための最初のカットであり、うまくいくようです。しかし、時間があるので、まだ良い方法がないか見てみたいと思います。
どんな入力でも大歓迎です。
時間の調査結果:
私の現在の Find and Exists コードは、pACList 内の 550 万項目をループするのに約84 分かかります。
pList.firstOrDefault(x=> x.CompanyId == item.key.ToString()); の使用 pACList の 550 万項目をループするのに54 分かかります