Linq伯爵,问题

时间:2010-09-08 00:20:27

标签: c# linq

我有这个简单的查询 - >

var games =
from p in _oListGames
where p.Visitor == team.ID
select p

我想用p.Visitor从该列表中获得的总游戏COUNT(_oListGames)来订购此选项

我该怎么做?

我想根据他们目前的访客游戏数量订购var“游戏”。

3 个答案:

答案 0 :(得分:3)

我假设您的意思是每个游戏主队拥有的访客游戏数量的顺序:

var games =
from p in _oListGames
where p.Visitor == team.ID
orderby _oListGames.Count(g => p.Home == g.Visitor) 
select p;

答案 1 :(得分:1)

更新:好的,我想我明白你现在的目标。这是我认为可能有用的一个选项:

var gameCounts = _oListGames
    .Where(p => p.Visitor == team.ID)
    .GroupBy(p => p.Home)
    .Select(g => new { Opponent = g.Key, Count = g.Count() })
    .OrderByDescending(x => x.Count);

这基本上与Mark's answer类似,但它实际上会为您提供结果中的计数(而不是按计数排序)。

答案 2 :(得分:0)

var games = from p in _oListGames where p.Visitor == team.ID select p;
int count = games.Count();

或者你可以这样做。

int count = _oListGames.Count(p=>p.Visitor == team.ID);

按team.ID的数量对其进行排序

var sortGames = games.OrderBy(s => s.Visitor.Count());