我应该基于孩子的领域对父母进行排序。
示例代码;
IQueryable<Parent> data = context.Parents.Include(o=>o.Children);
// Child有一个成员(字符串)Name。
问题:如何按子名称排序父母。
答案 0 :(得分:30)
您的问题有点令人困惑,因为首先,它使用Entity Framework和LINQ-to-SQL进行标记。您实际使用的是哪种ORM?
其次,更重要的是,你说要"sort Parent by Children Names"
。您想要按哪个子名称排序?您确实意识到您无法将列表的名称与另一个列表的名称进行比较,并决定哪一个应该先于另一个?
因此,如果我假设你想要按照字典顺序排列的子名称进行排序,那么你的解决方案将是以下内容(@Paul在这个上关闭,但你需要指定你要排序的属性):
context.
Parents.
OrderBy(p => p.
Children.
OrderBy(c => c.Name).Select(c => c.Name).FirstOrDefault()
);
在这种情况下,请考虑以下设置。家长PA
有子女CB
和CD
,而家长PB
有子女CC
和CA
。作为排序的结果,父PB
将在排序列表中排在第一位,因为子CA
将用作PB
的“主要”子项,而CB
将是PA
的“主要”孩子。如果这不是您正在寻找的行为,请提供示例和更清晰的说明。
答案 1 :(得分:3)
您可以将其中一个子名称排序,可能通过执行相应的排序来选择它吗?
类似的东西:
IQueryable<Parent> data = context.Parents.OrderBy(
p=>p.Children.OrderBy(chi => chi.Name).FirstOrDefault());