데이터베이스에서 비즈니스 모델 엔터티를 가져온 다음 문자열을 검색하기 위해 반복합니다. 그러나 내 로컬 호스트에서이 작업은 약 7 to 9 seconds for 500 objects
걸립니다.데이터베이스에서 가져온 모델 개체의 Clowing C# 반복
public List<FileFolder> SearchFolders(int id, string searchString)
{
/* Placeholder that references folders that passes search criteria */
List<FileFolder> addedFolders = new List<FileFolder>();
/* Get the folder with specified id, also include Folders
* that this folder has. No problem here works perfectly fine
* and fast */
FileFolder folder = dbSet.Include("Folders").
.Where(q => q.FileFolderID == id)
.ToList().FirstOrDefault();
/* This takes too much time as I mention, up to 9 seconds
* for 500 Folders */
foreach (FileFolder f in folder.Folders)
{
if (f.Name.Contains(searchString))
{
addedFolders.Add(f);
}
}
return addedFolders;
}
나는 가져온 데이터를 List로 변환하므로 모든 데이터가 메모리에 있다고 말할 수 있습니까? 따라서 foreach 루프는 폴더에 액세스하는 동안 더 이상 db 호출을하지 않아야합니다. 또한 .Include
방법을 점검하고 잘 작동합니다.
이 느린 반복의 원인은 무엇입니까?
감사합니다.
ToList 또는 FirstOrDefault입니다. 왜 둘 다 필요하니? Parallel.ForEach를 사용하지 않는 이유는 무엇입니까? – Dimitri
ToList를 삭제했습니다. Parallel.ForEach는 절대로 사용하지 않겠지 만, 고려해 보겠지 만 단지 500 개의 객체에 대해서는 너무 많이 사용하지 않습니까? –
이것이 실행되는 기계의 사양은 무엇입니까? – Dimitri