使用"1,2,3,4,5"。在 LINQ 中包含(ID int)?



我有一个整数列表的注册列,可能的值为 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();
  1. 将列表转换为数组
string combindedString = string.Join(",", employeeView.ToArray());
  1. Contains中使用了 2 的结果,如下所示
var listofProjects = (from project in _context.ProjectMaster
where project.ProjectID.ToString().Contains(combindedString)
select project).ToList();

最新更新