Optimize Linq code -
tables:
item
 id
keyword
 id
 keyword
itemkeyword
 itemid
 keywordid
 sequencenumber
searching items via keyword:
keyword keyword = keyword.firstordefault(a => a.keyword     .equals(input, stringcomparison.invariantcultureignorecase)); ienumerable<item> items = keyword.itemkeyword.orderby(a => a.sequencenumber)     .selectmany(a => a.item);   for getting related keywords:
ienumerable<keyword> relatedkeywords = items.itemkeyword     .selectmany(a => a.keyword)     .except(keyword); ienumerable<keyword> orderedrelatedkeywords = relatedkeywords     .orderbydescending(a => relatedkeywords         .where(b => b             .keyword.equals(a.keyword, stringcomparison.invariantcultureignorecase))             .count())     .distinct();   i don't have development computer me right now, hope idea. real problem here arranging in descending order relatedkeywords times has been used. there ways this? thanks.
hrm, linqtoentities, implies these queries run in database... if queries run in database, aren't string comparisons case insensitive anyway?
here's query form group, , order group's count.
iqueryable<string> orderedkeywords =   k in keywords   group k.keyword k.keyword g   order g.count() descending   select g.key;    // lambda syntax of above iqueryable<string> orderedkeywords = keywords   .groupby(k => k.keyword)   .orderbydescending(g => g.count())   .select(g => g.key)      
Comments
Post a Comment