Fre*_*ood 0 .net c# linq sorting linq-to-objects
var ids = new int[] { 3, 2, 20, 1 };
var entities = categories.Where(entity => ids.Contains(entity.Id));
Run Code Online (Sandbox Code Playgroud)
我必须像在ids数组中那样对实体进行完全相同的排序.我怎样才能做到这一点 ?
这应该做的伎俩(写在我的头顶,所以可能有错误)
var ids = new int[] { 3, 2, 20, 1 };
var ordering = ids.Select((id,index) => new {id,index});
var entities =
categories
.Where(entity => ids.Contains(entity.Id))
.AsEnumerable() //line not necessary if 'categories' is a local sequence
.Join(ordering, ent => ent.Id, ord => ord.id, (ent,ord) => new {ent,ord})
.OrderBy(x => x.ord.index)
.Select(x => x.ent)
Run Code Online (Sandbox Code Playgroud)