gpt4 book ai didi

c# - 与条件相交的 Linq 方法

转载 作者:行者123 更新时间:2023-11-30 16:48:47 27 4
gpt4 key购买 nike

我有以下 POCO:

public class User {
public ICollection<DepartmentPosition> DepartmentPositions { get; set; }
public PerformanceRecord PerformanceRecord { get; set; }
}

其中 DepartmentPosition 定义为:

public class DepartmentPosition {
public Department Department { get; set; }
public PositionType PositionType { get; set; }
}

PositionType 是一个枚举,定义为:

 public enum PositionType : byte {
Employee = 0,
Manager = 1
}

我希望能够查询 Manager 是否能够查看 Employee PeformanceRecord

这个的标准是:

如果经理有一个 DepartmentPositionPositionTypeManager,并且那个特定的 DepartmentPosition 也有一个Department 等于员工的任何 DepartmentPositionsDepartment,那么经理将能够看到员工的绩效记录。

有一个规范类用于此:

public CanUserSeePerformanceRecord() {
public bool IsSatisfiedBy(User fooUser, User barUser) {
// PSUEDO CODE

// Returns true if:

// fooUser and barUser both have a DepartmentPosition with the same Department AND for barUser, the PositionType of the DepartmentPosition is Manager
}
}

我认为您可以使用 Linq Intersect 或类似的方法来完成此操作,但不确定如何包含 barUser 必须持有标记为的 DepartmentPosition 的条件经理

最佳答案

假设 Department 有一个 ID 字段来唯一标识它。你应该能够做到这一点:

return barUser.DepartmentPositions
.Where(x => x.PositionType == PositionType.Manager)
.Select(x => x.Department.Id)
.Intersect(fooUser.DepartmentPositions.Select(x => X.Department.Id))
.Any()

关于c# - 与条件相交的 Linq 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37722219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com