我有两个对象列表,每个对象都有属性Recommendation,它本身就是一个'Recommendation'对象列表。我想根据其属性之一对推荐对象进行排序。我想出了这一点:属性的LINQ排序自定义对象列表中的列表列表
TPSqlORs.Where(x => x.Recommendations != null)
.ToList()
.ForEach(y => y.Recommendations.OrderBy(z => z.PointNumber));
SbmReportsORs.Where(x => x.Recommendations != null)
.ToList()
.ForEach(y => y.Recommendations.OrderBy(z => z.PointNumber));
但它会导致在所有原来的名单没有变化,这使我怀疑ToList()
只是把一个副本和排序发生在其被执行后会丢失副本。我沿着这些线进行搜索,但显然当它做了一个副本时,新列表包含对原始列表元素的引用,所以肯定它应该对这两个列表进行排序?
请打破你的习惯总是使用'ToList()。ForEach'。 'ToList'从第一个创建一个全新的集合,所以你正在浪费cpu-cycles和更多的内存,只是为了能够使用'List.ForEach'而不是'foreach'。在这种情况下,您甚至可以更加多余地使用它,因为您可以将'OrderBy'直接链接到'Where'后面。 –
“Recommendations”究竟是什么类型? –
@MatthewWatson'List' –
deed02392