3 回答
TA贡献1853条经验 获得超6个赞
不确定你现在在做什么,但这就是我会做的
var result = list.Where(p => p.Score == 0) .Select(p => new{p.Team, p.EmailId}) .GroupBy(p => p.Team) .Distinct();
TA贡献1852条经验 获得超7个赞
想要过滤列表以获取分数为 0 且按团队名称分组的电子邮件 ID。
过滤列表以获取分数为 0 的电子邮件 ID
var filteredList = list.Where(record => records.Score == 0);
按团队名称分组
var groupedByTeamName = filteredList.GroupBy(record => record.Team)
IEnumerable<IGrouping<TRecord, TTeam>>
如果我没记错的话,这将返回一个。IGrouping<T,K>
只是一个列表,其中包含Key
包含您分组依据的属性(在本例中为团队)。
您当然可以以级联方式调用它们:
list.Where(record => records.Score == 0).GroupBy(record => record.Team);
但是调试会有点困难,因为您必须选择代码并快速监视句子的部分。有时这不起作用。
TA贡献2065条经验 获得超13个赞
想要过滤列表以获取分数为 0 且按团队名称分组的电子邮件 ID。
这是一个很难说的方式吗:
我想要未得分团队成员的所有电子邮件吗?
将您的数据分组为“球队及其球员和得分”;仅保留那些得分为零的球队并提取球员的电子邮件。
为此,我们使用带有 aKeySelector 和 aResultSelector 的 GroupBy 重载
var emailsOfPlayersInTeamsWithZeroScor = myInput.GroupBy
// keySelector: the team
.GroupBy(inputItem => inputItem.Team,
// ResultSelector: from every Team with its players and scores
// make sequences of emails of players and check if there is a score at all
(team, players) => new
{
// not interested in the team
// remember if all scores are zero
HasOnlyZeroScore = players.All(player.Score == 0),
// remember all emails of the players in the team
PlayerEmails = players.Select(player => player.Email),
})
// keep only the items with a zero score
.Where(team => team.HasOnlyZeroScore)
// and select the lists of emails per team as one big list:
.SelectMany(team => team.PlayerEmails);
- 3 回答
- 0 关注
- 132 浏览
添加回答
举报