linq orderby有一些条件

时间:2016-05-31 09:27:29

标签: c# linq

我正试图通过积极参与者对小组进行排序......

在这种情况下,第一组包含内部最大的玩家:

List<Group> groups = tournament.Groups.OrderByDescending(o => o.Players.Count).ToList();

我必须添加一个只计算活跃玩家的过滤器,如下所示:

if (o.Players[index].Active == true)
    count Players[index] into o.Players.Count

有人可以帮我解释语法吗?

3 个答案:

答案 0 :(得分:2)

你可以用这个:

List<Group> groups = tournament.Groups
                    .OrderByDescending(o => o.Players.Count(P => P.Active)).ToList();

答案 1 :(得分:1)

如果您只想过滤活跃的玩家,可以在Count扩展名方法中移交谓词:

List<Group> groups = tournament
                     .Groups
                     .OrderByDescending
                         (o => o.Players.Count(p => p.Active))
                     .ToList();

答案 2 :(得分:0)

您可能希望在结果中显示实际玩家的数量,而不仅仅是按他们排序

cityid: 1, shopid: 1, "location" : "2dsphere"