鉴于以下类别:
public class Room
{
public List<Person> People {get;set;}
public string RoomType {get;set;}
}
public class Person
{
public bool IsLead{get;set;}
}
鉴于我有一个包含人员列表的房间列表,我如何以这样的方式订购
请注意,只有一个人是领导者。
示例数据:
有序:
答案 0 :(得分:4)
这是一种简单有效的方法:
var orderedRooms = rooms
.OrderBy(room => !room.People.Any(person => person.IsLead)) // room with lead will be first
.GroupBy(room => room.RoomType) // RoomType with lead will be first
.SelectMany(group => group); // flatten the list of groups into one list
此查询符合以下要求:
但是,不按字母顺序对房间类型进行排序。