不使用占位符的动态 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();
包含子句的语法是
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();