Вопрос, который вам нужно задать: «Когда мне нужно, чтобы SQL действительно выполнялся?»В LINQ это разница между отложенным и немедленным выполнением.Любой метод, который возвращает IEnumerable<>
, должен выполнить запрос, чтобы получить результаты.IQueryable<>
, с другой стороны, задерживает выполнение запроса до тех пор, пока к нему не будет вызван метод, который возвращает IEnumerable<>
.В приведенном вами примере может быть быстрее передать результат функции GetAllNotesByUser
как IQueryable<>
, так что вы выполняете один запрос вместо двух:
public static IQueryable<Account> GetAllNotesByUser(Guid UserId)
{
...
}
Возможны ситуациигде вам нужно перечислить результат GetAllNotesByUser
без выполнения каких-либо дополнительных манипуляций.Помните, что в этих случаях вы можете вызвать ToList () для принудительного выполнения запроса.
var result = GetAllNotesByUser(<guid>).ToList();