c# - How does the following LINQ statement work? -


how following linq statement work?

here code:

var list = new list<int>{1,2,4,5,6}; var = list.where(m => m%2 == 0); list.add(8); foreach (var in even) {     console.writeline(i); } 

output: 2, 4, 6, 8

why not 2, 4, 6?

the output 2,4,6,8 because of deferred execution.

the query executed when query variable iterated over, not when query variable created. called deferred execution.

-- suprotim agarwal, "deferred vs immediate query execution in linq"

there execution called immediate query execution, useful caching query results. suprotim agarwal again:

to force immediate execution of query not produce singleton value, can call tolist(), todictionary(), toarray(), count(), average() or max() method on query or query variable. these called conversion operators allow make copy/snapshot of result , access many times want, without need re-execute query.

if want output 2,4,6, use .tolist():

var list = new list<int>{1,2,4,5,6}; var = list.where(m => m%2 == 0).tolist(); list.add(8); foreach (var in even)  {     console.writeline(i);  } 

Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -