首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据多个因素排序列表

根据多个因素排序列表
EN

Stack Overflow用户
提问于 2014-02-14 14:40:29
回答 1查看 89关注 0票数 4

鉴于以下课程:

代码语言:javascript
复制
public class Room
{
    public List<Person> People {get;set;}
    public string RoomType {get;set;}
}

public class Person
{
    public bool IsLead{get;set;}
}

既然我有一张房间清单,里面有一张人的名单,我怎么能给他们下订单呢?

  • 顺序列表中的第一个房间是领队所在的房间。
  • 所有同类型的房间都是相互跟踪的。

请注意,只有一个人是领导。

示例数据:

  • 双室无铅
  • 单室无铅
  • 单室引线
  • 双室无铅

命令:

  • 单室引线
  • 单室无铅
  • 双室无铅
  • 双室无铅
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-14 16:21:04

下面是一种简单、有效的方法:

代码语言:javascript
复制
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

此查询满足以下要求:

  • 顺序列表中的第一个房间是领队所在的房间。
  • 所有同类型的房间都是相互跟踪的。

但是,它并不按字母顺序对房间类型进行排序。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21782230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档