我有一个整数列表的注册列,可能的值为 10,2,3 或 10 或 2,3 。我还有另一个项目列 ProjectID,可能的值为 1..10。所以我使用 linq 来检查注册上下文中的哪个用户应该按 ID 访问项目。
所以我正在使用.Contains
我试图将员工 ID 转换为字符串和 w.ProjectID,请我卡住了,因为我错过了一些东西。
var UserID = Convert.ToInt32(HttpContext.Current.Session["UserID"]);
var listofProjects = (
from r in _context.Registration
from project in _context.ProjectMaster.Where(w => r.EmployeeID.Contains(w.ProjectID.ToString()) && r.RegistrationID == UserID)
select project
).ToList();
我在注册表中的 EmployeeID 是 10,我在项目上下文中的 ProjectID 是 10,所以我有 10.Contains(10(,它正在计数 1 和 10,而不仅仅是 10。
我通过以下方式解决了我的问题 1.将逗号分隔值的列转换为列表
var employeeView = (
from r in _context.Registration
.Where(w => w.RegistrationID == UserID)
select r.EmployeeID
).ToList();
- 将列表转换为数组
string combindedString = string.Join(",", employeeView.ToArray());
Contains
中使用了 2 的结果,如下所示
var listofProjects = (from project in _context.ProjectMaster
where project.ProjectID.ToString().Contains(combindedString)
select project).ToList();