一尘不染

在where子句中使用Array进行Linq查询?

sql

我已经搜索过了,但是似乎仍然无法使它为我工作。我有一个与用户(他们的组织ID)相关联的ID数组。将它们放在int []中,如下所示:

int[] OrgIds = (from oh in this.Database.OrganizationsHierarchies
                       join o in this.Database.Organizations on oh.OrganizationsId equals o.Id
                       where (oh.Hierarchy.Contains(@OrgId))
                          || (oh.OrganizationsId == Id)
                       select o.Id).ToArray();

那里的代码不是很重要,但是它表明我正在从Linq查询中获取一个整数数组。

但是,从此,我想运行另一个获取人员列表的Linq查询,该代码如下:

List<Personnel> query = (from p in this.Database.Personnels
                                where (search the array)
                                select p).ToList();

我想在where子句中添加仅选择数组中具有OrganizationId的用户的方法。因此,在SQL中,我会做类似“ where OrganizationId
=‘12’或OrganizationId =‘13’或OrganizatonId =‘17’的事情。”

我可以在Linq / .NET中相当容易地做到这一点吗?


阅读 119

收藏
2021-03-17

共1个答案

一尘不染

虽然这可能更适合联接,但是您可以使用以下命令:

List<Personnel> query = 
    (from p in this.Database.Personnels 
    where OrgIds.Contains(p.OrgID) select p).ToList();

这将转化为SQL之类的东西。

where OrgID in (1,2,...,n)
2021-03-17