c# - Extracting lambda expression from LINQ -


i have next chunk of code

var query = wordcollection.select((word) => { return word.toupper(); })                           .where((word) =>                                   {                                       return string.isnullorempty(word);                                   })                           .tolist(); 

suppose want refactor code , extract lambda expression clause. in visual studio select lambda , refactor -> extract method. doing have linq modified to

 var query = wordcollection.select((word) => { return word.toupper(); })                           .where(newmethod1())                           .tolist(); 

and newmethod1() declared as

  private static func<string, bool> newmethod1()   {       return (word) =>       {           return string.isnullorempty(word);       };   } 

the question why new method not have input parameters, delegate func states newmethod1() should have string input parameter?

to expected result, mark part string.isnullorempty(word) , extract method:

private bool newmethod(string word) {     return string.isnullorempty(word); }   

what got because extract created method returns delegate. not method matches delegate. method returns method. latter accepts string parameter word , returns bool result.

sure doing above changes code to:

.where((word) => newmethod(word)) 

but can safely change to:

.where(newmethod) 

side note:

no need use return keyword in linq queries or one-line lambda, can refactor query this:

var query = wordcollection.select(word => word.toupper())                           .where(word => string.isnullorempty(word))                           .tolist(); 

Comments

Popular posts from this blog

Spring Boot + JPA + Hibernate: Unable to locate persister -

go - Golang: panic: runtime error: invalid memory address or nil pointer dereference using bufio.Scanner -

c - double free or corruption (fasttop) -