c# 3.0 - linq help - newbie -


how come work

public iqueryable<category> getcategories(int postid)   {       subnusmvcrepository<categories> categories = new subnusmvcrepository<categories>();       subnusmvcrepository<post_category_map> postcategorymap = new  subnusmvcrepository<post_category_map>();        var query = c in categories.getall()                   join pcm in postcategorymap.getall() on c.categoryid equals pcm.categoryid                   pcm.postid == 1                   select new category                   {                     name = c.name,                     categoryid = c.categoryid                   };        return query; } 

but not

public iqueryable<category> getcategories(int postid)   { subnusmvcrepository<categories> categories = new subnusmvcrepository<categories>(); subnusmvcrepository<post_category_map> postcategorymap = new subnusmvcrepository<post_category_map>();      var query = c in categories.getall()                 join pcm in postcategorymap.getall() on c.categoryid equals pcm.categoryid                 pcm.postid == postid                 select new category                 {                     name = c.name,                     categoryid = c.categoryid                 };     return query;   } 

the issue in implementation of query provider.

pcm.postid == 1

and

pcm.postid == postid

actually have big difference. in expression tree first generated constantexpression doesnt need evaulated.

with second, compiler generates inner class here (this _displayclassx see). class have property (will same name parameter) , expression tree create memberaccessexpression points auto-generated displayclassx. when query provider comes accross need compile() lambda expression , evaluate delegate value use in query.

hope helps.

cosullivan


Comments

Popular posts from this blog

windows - Why does Vista not allow creation of shortcuts to "Programs" on a NonAdmin account? Not supposed to install apps from NonAdmin account? -

c++ - How do I get a multi line tooltip in MFC -

unit testing - How to mock PreferenceManager in Android? -