2016-05-31 235 views
0

我試圖通過現役球員的分類組...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 

有人可以幫我的語法嗎?

回答

2

您可以使用此:

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

如果你只想在現役球員中進行篩選,你可以交出在Count擴展方法斷言:

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

你可能喜歡展示在結果有多少實際球員,不僅按他們排序

var query = from g in tournament.Groups 
      let activePlayers = g.Players.Count(p=>p.Active) 

      orderby activePlayers descending 
      select new {Group = g, ActivePlayers = activePlayers};