不使用占位符的动态 Linq 'contains' 子句

Dynamic Linq 'contains' clause without using placeholder

包含子句的语法是

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] Expression expected (at index 0)

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

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

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

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

尝试代码:

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