【发布时间】:2019-04-28 09:22:13
【问题描述】:
我在对 List 中的子元素进行排序时遇到问题,并找到了讨论 List<T> vs IEnumerable<T> in foreach 的主题。我想知道如何使用 LINQ 或 Lambda 表达式对子 List 进行排序。有人可以推荐我吗?代码示例如下:
public class Parent
{
// Other properties...
public IList<Child> Children { get; set; }
}
public IEnumerable<Parent> DoStuff()
{
var result = DoOtherStuff() // Returns IEnumerable<Parent>
.OrderByDescending(SomePredicate)
.ThenBy(AnotherPredicate); // This sorting works as expected in the return value.
foreach (Parent parent in result)
{
parent.Children = parent.Children.OrderBy(YetAnotherPredicate).ToList();
// When I look at parent.Children here in the debugger, it's sorted properly.
}
return result;
// When I look at the return value, the Children are not sorted.
}
【问题讨论】:
-
您应该在订购 DoOtherStuffResult() 后使用 ToList(),或者使用示例中 foreach 的 yield return。