0

我的代码是这样的:

List<int> IDs = new List<int> {9,7,38, 23}
IQueryable<Post> pp = myDataEntity.Posts.Where(p=>IDs.Contains(p.ID));

我如何解释我想按 ID 中的 ID 顺序对 pp 进行排序?谢谢你。

4

3 回答 3

1

假设您想保留您在 ID 中的 ID 顺序,而不是实际上它的有序版本,您可以这样做:

var pp = IDs.Select(x=> myDataEntity.Posts.Where(p=>p.ID == x))
            .SelectMany(x=>x);

使用 ID 作为外部集合,您可以保持其中元素的顺序。

于 2013-09-03T09:18:41.937 回答
1

您可以通过以下方式订购List.IndexOf

IQueryable<Post> orderedPosts myDataEntity.Posts
    .Select(p  => new { Post=p, Index=IDs.IndexOf(p.ID) })
    .Where(x   => x.Index >= 0)
    .OrderBy(x => x.Index)
    .Select(x  => x.Post);
于 2013-09-03T09:22:08.007 回答
0

利用OrderByDescending

IQueryable<Post> pp = myDataEntity.Posts.Where(p=>IDs.Contains(p.ID))
                                        .OrderByDescending(p => p.ID)
于 2013-09-03T09:15:53.700 回答