how do I sort a collection with child property?

*爱你&永不变心* 提交于 2019-11-29 04:48:10

Your question is somewhat confusing, since first of all, it is tagged both with Entity Framework and LINQ-to-SQL. Which ORM are your actually using?

Secondly, and more to the point, you say that you want to "sort Parent by Children Names". Which child name do you want to sort by? You do realize that you can't compare a list of names to another list of names and decide which one should come before the other?

So if I assume you want to sort by the child name that comes first lexicographically, your solution would be the following (@Paul was close on this one, but you need to specify the property you are sorting by):

context.
Parents.
OrderBy(p => p.
             Children.
             OrderBy(c => c.Name).Select(c => c.Name).FirstOrDefault()
       );

In this case, consider the following setup. Parent PA has children CB and CD while parent PB has children CC and CA. As a result of the sorting, parent PB will come first in the sorted list, since child CA will be used as the "main" child for PB, while CB will be the "main" child for PA. If that's not the behavior you are looking for, please provide an example and a clearer description.

You can take one of the children names to sort by, probably select it by doing the corresponding sorting?

Something like:

IQueryable<Parent> data = context.Parents.OrderBy(
     p=>p.Children.OrderBy(chi => chi.Name).FirstOrDefault());
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!