Linq iqueryable Что быстрее: Доступ к таблице напрямую или через иерархию объектов? - PullRequest
0 голосов
/ 18 мая 2018

Давайте предположим, что у меня есть 2 связанные таблицы: Кандидаты - есть список Уведомления Итак, вопрос:

Candidates.SelectMany(c=>c.Notifications.Where(...).ToList())

или что-то вроде

var candIds = ...//int array of candidates that i need
Notifications.Where(n=>candId.Contains(n.CandidateId) && ...).ToList()

Где производительность лучше?И эти выражения одинаковы?

1 Ответ

0 голосов
/ 18 мая 2018

Без вашего набора данных и контекста мы не можем сказать вам, какой из них быстрее для вашего сценария.

Я бы предложил создать собственный сценарий тестирования:

var candIds = ...//int array of candidates that i need
var watch = new Stopwatch(); 
watch.Start();
Candidates.SelectMany(c=>c.Notifications.Where(...).ToList())
watch.Stop();
Console.WriteLine("Time Elapsed {0} ms", watch.Elapsed.TotalMilliseconds);
watch.Restart();
Notifications.Where(n=>candId.Contains(n.CandidateId) && ...).ToList();
watch.Stop();
Console.WriteLine("Time Elapsed {0} ms", watch.Elapsed.TotalMilliseconds);
...