基于父ID的列表中的Linq Order列表

时间:2014-08-13 11:52:49

标签: asp.net linq

有一个项目列表,我需要根据外部列表的ID对该列表中的项目进行排序/订购

public class Venue
{
    public int Id { get; set; }

    public string Code { get; set; }

    public IEnumerable<Machines> Machines { get; set; }
}

public class Machine
{
    public string Name { get; set; }
}

假设我有一个包含3个场地的列表,我想只对Venue.Id = 1的Venue的机器进行排序; 有一个场地列表,我想总是按场地代码排序,然后按场地名称排序机器,Id = 1;

我尝试了这个但是无法正常工作:

 query = query.OrderBy(x => x.Code).ThenBy(y => y.Machines.OrderBy(q => q.Name).Where(x => y.Id == 1))

1 个答案:

答案 0 :(得分:1)

如果要对IEnumerable<T>对象的属性进行排序,则需要选择一个新属性:

query = query
    .Select(v => new Venue
    { 
        Id = v.Id, 
        Code = v.Code, 
        Machines = v.Id == 1 ? v.Machines.OrderBy(m => m.Name) : v.Machines
    })
    .OrderBy(v => v.Code);