我应该根据 child 的领域对 parent 进行排序。
示例代码;
IQueryable<Parent> data = context.Parents.Include(o=>o.Children);
// child 有一个成员(字符串)名称。
问题:如何按 child 的名字对 parent 进行排序。
最佳答案
您的问题有些令人困惑,因为首先,它同时被Entity Framework和LINQ-to-SQL标记。您实际使用哪个ORM?
其次,更重要的是,您说要"sort Parent by Children Names"
。您想排序哪个 child 的名字?您确实意识到,您无法将名称的列表与另一个名称的列表进行比较,并决定哪个名称应该先于另一个名称?
因此,如果我假设您要按字典顺序排列的第一个子名称进行排序,则解决方法如下(@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
的“主要”子项。如果这不是您要查找的行为,请提供示例和更清晰的描述。
关于linq - 如何对带有子属性的集合进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6617596/