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

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -