【发布时间】:2021-04-17 20:57:57
【问题描述】:
我需要知道我需要为 where 子句放置什么来过滤动态整数列表。
我一直在尝试使用IQueryable 和“数组中的位置”来搜索它,但我不知道需要更好地搜索它的术语。我一直很糟糕,查看另一个人编写的代码并复制模式而不是了解发生了什么。我就是想不通。
在我正在处理的 csharp 代码行中,我试图模仿 SQL 查询中的过滤器,它看起来如下所示,(从表中获取数据 jobs em> id =1、id=2 和 id=3)。
SELECT * FROM jobs j WHERE j.id in (1,2,3)
jobs 表可能如下所示:
CREATE TABLE jobs
{ id [int] identity(1,1) not null,
username [varchar](50) not null,
category [varchar](50) not null,
...
}
到目前为止我所拥有的:
string csv_ids = "1,2,3";
IQueryable<MyClass> info = null;
info = from j in db.jobs
// this is the line I'm having trouble with
where j.id in csv_ids.Split(',')
select new MyClass
{
// getting data
};
解决方案: 在 Roy 的帮助下,我设法朝着正确的方向前进,添加了
int[] ids = csv_ids.Split(',').Select(int.Parse).ToArray(); //since id is integer
而且,主要是
...
// here
where ids.Contains(j.id)
...
【问题讨论】:
-
Job.Id 是什么类型? db.jobs 的结构是什么?
-
j.id 是一个整数。 db.jobs 是从 SQL 数据库中提取的数据表。 id 是主键。
-
您能否将相关信息添加到您的问题中,以便问题易于重现?请参阅创建minimal reproducible example。
标签: c# iqueryable