ウェブサイトから不要な画像を削除しようとしています。製品画像フォルダには200000以上の画像が含まれています。私は、リスト内で非アクティブな製品コードのリストを持っています。別のリストにファイル名のリストがあります。ここでC#リストと他のリストとを比較する
List<string> lFileList = files.ToList();
List<string> lNotinfiles = new List<string>();
foreach (var s in lFileList)
{
var s2 = (from s3 in lProductsList
where s.Contains(s3.cProductCode)
select s3.cProductCode).FirstOrDefault();
if (s2 == null)
{
lNotinfiles.Add(s);
}
}
lProductsList
が使用されていないProductCodes
を含むリストです。 イメージリストには同じ製品の複数のイメージが含まれていますが、イメージ名には製品コードが含まれています(ほとんどの場合、_1、_2.jpgがあります)
上記のコードは機能しますが、リストにないを取得するための単一のフォルダ分間。私は、次を試しましたが、それは15分以上を要した。
var s2 = (from s3 in lProductsList
where s.IndexOf(s3.cProductCode) >= 0
select s3.cProductCode).FirstOrDefault();
また、私は動作しませんでしたそのすべて一緒にループを削除しようとしています。
これをより速く達成するための最良の方法は何ですか。
watch.Elapsed.TotalMillisecondsこの中でelapsedMillisecondsにアクセスするには、はるかに優れた性質であります原因は、TotalMillisecondsが2倍で、ElapsedMillisecondsが長いためですdは丸められます。 – Botonomous
問題はありません。ElapsedTicksもlongまたはint64なので、同じ運命に陥ります。 – Botonomous
コードを測定するときに.selectの後に.ToList()を必ず付けてください:)遅れて実行すると、あなたのスニペットに表示されます。 – Botonomous