2017-06-01 121 views
-1

给定的语法包含子句动态LINQ的 '包含' 条款,而无需使用占位符

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 

[错误]表达预期(索引0)

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

回答

0

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

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

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

+0

这是错误的答案,如何执行查询,此查询哪里的原因有一些无效参数 –

+0

其动态LINQ花花公子 –

+0

它的工作原理已经执行它。 –

0

try代码:

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(); 
+0

动态LINQ家伙,除了我已经得到了答案 –

+1

但是,当你不需要时,你为什么使用动态LINQ? – NetMage

+0

我确实需要使用它。每个列和每个过滤条件都是在运行时确定的 –