我有一组Employee对象
IEnumerable<Employee> employees;这里的雇员看起来是这样的:
class Employee
{
int Id {get; set;}
int Name {get; set;}
}我还有第二个收藏品:
IEnumerable<int> fired;我想要做一个雇员的交集,并根据雇员的Id属性在适当的位置被解雇。类似于:
employees.Intersect(fired)当然,这是行不通的,因为雇员和被解雇的人是不同的类型。我知道我可以这样做:
List<int> empIds = null;
employees.Foreach(x => empIds.Add(x.Id);然后做一个empIds的交集,然后触发,然后将它合并回来。但必须有办法做到这一点,而不宣布一个新的名单。我的目标是有一个通过引用传递员工集合的方法,它将“过滤掉”被解雇的员工:
void YourRFired(ref IEnumerable<employee> employees)
{
IEnumerable<int> fired = .....
// intersect employee and fired here to get a list of employees that are
not fired.
} 谢谢
发布于 2016-04-14 20:30:46
去哪儿怎么样?
var notFiredEmployees = employees.Where(e=>!fired.Contains(e.Id));发布于 2016-04-14 20:31:10
就像这样
IEnumerable<Employee> employees;
IEnumerable<int> firedEmployeeIds;
//return all employees who are not fired
return employees
.GroupJoin(firedEmployeeIds, e => e.Id, f => f, (employee, ids) => new
{
employee,
fired = ids.Any() == false
})
.Where(x => x.fired == false)
.Select(x => x.employee);https://stackoverflow.com/questions/36633246
复制相似问题