views:

195

answers:

1

I have a DAL that is composed of a bunch of methods that perform LINQ queries on my database.

How do I ensure that before returning say an IEnumberable or something similar from the database, I ensure that the LINQ query is execute then, not in some delayed fashion only to be executed when the result is used?

I know I can call .ToList() on my result in my methods to force it to execute, but is this the best way?

+6  A: 

Calling ToList or ToArray really is the best way to force it to execute and get the entire sequence (see Randolpho's comment below for other methods that will force execution for single elements of the sequence).

Is there a specific reason you would want to avoid deferred excution?

Andrew Hare
Don't forget First(), Single(), or FirstOrDefault() or SingleOrDefault()
Randolpho
Very true but I think they wanted to get the entire sequence.
Andrew Hare
i was wondering, does .FirstOrDefault and similar methods force linq query execution? just wanted to confirm this...
Erx_VB.NExT.Coder
@Erx_VB.NExT.Coder - Yes, the methods that Randolpho mentions above in his comment do force execution.
Andrew Hare