Linq-to-Entities working with One-to-Many Relationship and Sorting -
i sort keywords sort property. have one-many relationship between page -> keyword.
question: if perform comprehension query as:
ienumerable<page> query = p in contxt.pages p.id == myid select p; ienumerable<page> pge = query.first();
could expect single page record set page’s properties , 1 keyword collection?
my understanding since there exist one-many relationship, don’t have perform join. linq entity framework should have knowledge of relationship, , return collection.
so understanding, when try sort on keyword.sort, keyword out of scope:
ienumerable<page> query = p in contxt.pages p.id == myid orderby p.keywords. select p;
utilizing above understanding thought query incorrect because keywords returned collection, must perform sort follows:
pagekeywords pagekeywords = new pagekeywords(); keywords keywords; ienumerable<page> query = p in contxt.pages p.id == vals.pageid select p; page pge = query.first(); pagekeywords.keywords = new list<keywords>(); pagekeywords.id = pge.id; pagekeywords.description = pge.descp; pagekeywords.title = pge.title; pagekeywords.showtitle = pge.showtitle; pagekeywords.keywords = pge.keywords.orderby(k => k.sort); foreach (var item in pagekeywords.keywords) { keywords = new keywords(); keywords.id = item.id; keywords.name = item.name; keywords.sort = item.sort; pagekeywords.keywords.add(keywords); }
however did not work. keywords not sorted sort? code above work, need keywords sorted sort property. keywords collection isn't being sorted.
i tried:
pagekeywords.keywords.sort((x, y) => int.compare(x.sort, y.sort));
which did not work.
i have tried understand, missing something? suggestions appreciable.
try this:
var query = p in contxt.pages p.id == vals.pageid select new pagekeywords { id = pge.id, description = pge.descp, title = pge.title, showtitle = pge.showtitle, keywords = pge.keywords.orderby(k => k.sort) };
Comments
Post a Comment