1

我一辈子都想不通为什么这个列表不能正确排序。有人可以指出我做错了什么吗?

List<WNBlogPost> posts = new List<WNBlogPost>();

IEnumerable<WNBlogPost> orderedPosts = (
    from p in posts
    select p
).OrderByDescending(c => c.ID);

foreach (WNBlogPost post in orderedPosts) {
    //output post to page
}

我正在循环中将项目添加到帖子列表中,但是它们添加到列表中的顺序与我添加 OrderByDescending() 后它们出现的顺序相同。

知道我做错了什么吗?

4

1 回答 1

12

LINQ 查询(无需外部努力)不会将副作用引入它们操作的集合中。因此,仅显示您可以通过 访问的OrderByDescending排序视图postsorderedPosts

// hat-tip: @JimSchubert
foreach (var post in orderedPosts)
{
    Frob(post); // these will be frobbed in descending order
}

如果您想对实际列表本身进行排序,您应该使用List<T>.Sort

// utilize the Comparison<T> overload of List<T>.Sort to perform a
// descending sort based on the post ID
posts.Sort((post1, post2) => -post1.ID.CompareTo(post2.ID));
于 2012-04-19T18:05:02.957 回答