动态Linq'包含'不使用占位符

时间:2017-06-01 03:54:25

标签: c# asp.net linq asp.net-core-mvc dynamic-linq

为contains子句提供的语法是

ids = new int[] {1,2,3,4};
dataContext.Table.Where("@0.Contains(id)", ids);

但我想要的是

dataContext.Table.Where("{1,2,3,4}.Contains(id)"); //getting exception here
  

[ERROR]预期的表达式(在索引0处)

我需要这个因为where子句我或不可以使用contains方法。这取决于用户的行为方式。

2 个答案:

答案 0 :(得分:0)

所以我在修补一段时间后得到了答案。所以在这里发布答案。

 dataContext.Table.Where("new Int[]{1,2,3,4}.Contains(id)");

您可以使用所需的任何数据类型。我使用反射来查找数据类型并相应地使用它。

答案 1 :(得分:0)

尝试代码:

int[] ids= {1,2,3,4};

dataContext.Table.Where(c=>c.ids.Contains(t.id)).ToList();

var result= (from p in dataContext.Table.AsEnumerable()
                      join q in ids on p.id equals q
                        select p).Distinct() .ToList();