Linq:计算子列表出现在另一个列表中的次数
Linq: Count number of times a sub list appear in another list
我想一定有一个简单的方法,但没有找到。我想检查一个项目列表是否(全部或部分)出现在另一个列表中。
例如:假设我有一个部门的人员,如列表 1。然后我有一个运动列表,其中包含该运动的参与者列表。
现在我要数一数,一个部门的所有人都参加了多少场运动。
(我知道从标准化的角度看有些表可能没有意义,但这样比尝试解释我的真实表更容易)
所以我有这样的东西:
var peopleInDepartment = from d in Department_Members
group d by r.DepartmentID into g
select new
{
DepartmentID = g.Key,
TeamMembers = g.Select(r => d.PersonID).ToList()
};
var peopleInTeam = from s in Sports
select new
{
SportID = s.SportID,
PeopleInSport = s.Participants.Select(x => x.PersonID),
NoOfMatches = peopleInDepartment.Contains(s.Participants.Select(x => x.PersonID)).Count()
};
此处的错误是 peopleInDepartment 不包含 'Contains' 的定义。我想我只是需要一个新的角度来看待这个。
作为最终结果,我想打印:
部门1:部门参加3项运动
部门2:部门参加0项运动
等等
从预期的结果来看,您应该像第一个查询一样以部门 table 为基础进行查询。也许像这样在第一个查询中包含体育计数:
var peopleInDepartment =
from d in Department_Members
group d by r.DepartmentID into g
select new
{
DepartmentID = g.Key,
TeamMembers = g.Select(r => d.PersonID).ToList(),
NumberOfSports = Sports.Count(s => s.Participants
.Any(p => g.Select(r => r.PersonID)
.Contains(p.PersonID)
)
)
};
NumberOfSports
应包含运动计数,其中任何参与者都被列为当前部门 (g.Select(r => r.PersonID).Contains(p.PersonID))
) 的成员。
我想一定有一个简单的方法,但没有找到。我想检查一个项目列表是否(全部或部分)出现在另一个列表中。
例如:假设我有一个部门的人员,如列表 1。然后我有一个运动列表,其中包含该运动的参与者列表。
现在我要数一数,一个部门的所有人都参加了多少场运动。
(我知道从标准化的角度看有些表可能没有意义,但这样比尝试解释我的真实表更容易)
所以我有这样的东西:
var peopleInDepartment = from d in Department_Members
group d by r.DepartmentID into g
select new
{
DepartmentID = g.Key,
TeamMembers = g.Select(r => d.PersonID).ToList()
};
var peopleInTeam = from s in Sports
select new
{
SportID = s.SportID,
PeopleInSport = s.Participants.Select(x => x.PersonID),
NoOfMatches = peopleInDepartment.Contains(s.Participants.Select(x => x.PersonID)).Count()
};
此处的错误是 peopleInDepartment 不包含 'Contains' 的定义。我想我只是需要一个新的角度来看待这个。
作为最终结果,我想打印:
部门1:部门参加3项运动
部门2:部门参加0项运动
等等
从预期的结果来看,您应该像第一个查询一样以部门 table 为基础进行查询。也许像这样在第一个查询中包含体育计数:
var peopleInDepartment =
from d in Department_Members
group d by r.DepartmentID into g
select new
{
DepartmentID = g.Key,
TeamMembers = g.Select(r => d.PersonID).ToList(),
NumberOfSports = Sports.Count(s => s.Participants
.Any(p => g.Select(r => r.PersonID)
.Contains(p.PersonID)
)
)
};
NumberOfSports
应包含运动计数,其中任何参与者都被列为当前部门 (g.Select(r => r.PersonID).Contains(p.PersonID))
) 的成员。