Как ускорить выборку элементов List
private List<Document> FindDisabledDocuments()
{
List<Document> disabledDocuments = new();
if (User is null)
{
return disabledDocuments;
}
foreach (var d in Documents)
{
if (d.Users.Find(u => u.Id == User.Id) is null) // Users is List<User>
{
disabledDocuments.Add(d);
}
}
return disabledDocuments;
}
public class User
{
public int Id { get; set; }
// Several internal properties...
public virtual List<Document> EnabledDocuments { get; set; } = null!;
}
public class Document
{
public int Id { get; set; }
// Several internal properties...
public virtual List<User> Users { get; set; } = null!;
}
Всё работает, но при большом количестве записей выборка занимает значительное время.
Как можно ускорить процесс выборки?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Попробуйте LINQ запрос написать. Что-то такое, если я правильно понял логику метода:
private IEnumerable<Document> FindDisabledDocuments()
{
if (User is null)
{
return new List<Document>();
}
return Documents.Where(d => !d.Users.Any(u => u.Id == User.Id));
}
LINQ запросы оптимизируются, возможно это будет быстрее работать.