我需要比較兩個列表,其中每個列表包含大約60,000個對象。什麼是最有效的方式呢?我想選擇源列表中不存在於目標列表中的所有項目。比較兩個包含大量對象的列表
我正在創建一個同步應用程序,其中c#掃描目錄並將每個文件的屬性放入列表中。因此有一個源目錄列表和目標目錄的另一個列表。然後,而不是複製所有的文件,我只是比較列表,看看哪些是不同的。如果兩個列表都有相同的文件,那麼我不會複製該文件。這裏是我使用的Linq查詢,當我掃描一個小文件夾時它起作用,但當我掃描一個大文件夾時它不起作用。
// s.linst is the list of the source files
// d.list is the list of the files contained in the destination folder
var q = from a in s.lstFiles
from b in d.lstFiles
where
a.compareName == b.compareName &&
a.size == b.size &&
a.dateCreated == b.dateCreated
select a;
// create a list to hold the items that are the same later select the outer join
List<Classes.MyPathInfo.MyFile> tempList = new List<Classes.MyPathInfo.MyFile>();
foreach (Classes.MyPathInfo.MyFile file in q)
{
tempList.Add(file);
}
我不知道爲什麼該查詢永遠。還有其他的事情,我可以利用。例如,我知道如果源文件與目標文件相匹配,則不可能對該文件進行其他重複,因爲不可能必須使用相同名稱和相同路徑來命名文件名。