【发布时间】:2015-08-06 18:28:14
【问题描述】:
我有一个要在最后打印的静态列表。
class User
{
int ID {get;set;}
string status {get; set;}
DateTime startTime {get;set;}
int groupId {get;set;}
}
我想在内存中维护用户列表并在最后打印。 现在列表可以包含如下数据:
List<User> userList = new List<User>();
userList.Add( new User{ ID = 1, ..., groupId = 1 } );
userList.Add( new User{ ID = 2, ..., groupId = 1 } );
userList.Add( new User{ ID = 3, ..., groupId = 2 } );
userList.Add( new User{ ID = 4, ..., groupId = 1 } );
userList.Add( new User{ ID = 5, ..., groupId = 3 } );
我想对这些数据进行分组,我可以使用userList.GroupBy(x => x.groupID) 来完成,我得到了Enumberable<ID, List<User>>()。抱歉,在分组列表中,我想检查是否有任何用户的状态 == 失败,然后我想打印所有用户信息,如果状态 == true,那么我只想打印用户 ID 或名称。为此我正在做
groupedList.Any(x => x.status == fail)
但我希望我的输出按 startTime 排序,然后我希望结果按 Id 分组
var result = userList.GroupBy(x=> x.groupID).OrderByDescending(x => x.startTime).ToList();
然后,当我像这样打印时,我想要我的结果
startTime - 10.00 groupId - 1 ,id - 1, ....status - fail ... more properties
startTime - 10.00 groupId - 1, id - 2, .... status - pass ...
startTIme - 10.00 groupId - 1, id - 4, status - pass
startTiem = 10.00 groupId - 2, id - 3, status - pass (just this info)
starttime - 9.50 groupId - 3, id - 5, status - fail ... more info
starttime - 9.50 groupid - 3, id - 6, status - pass ... (still more info. as group has a fail case)
如果我使用上面的 linq 查询,它不会给出相同的输出。请就如何实现这一点提出建议。
【问题讨论】: