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

Popular posts from this blog

List<T>().Add problem C# -

Javascript natural sort array/object and maintain index association -