我有动态LINQ WHERE语句:System.Linq.Dynamic - 我可以使用IN子句中WHERE语句
dataContext.Table.Where("id = 0 Or id = 1 Or id = 2 Or ...");
我想更改为:
dataContext.Table.Where("id IN (0, 1, 2, ...)");
但doesn't工作。我如何做到这一点以获得更好的表现?
我有动态LINQ WHERE语句:System.Linq.Dynamic - 我可以使用IN子句中WHERE语句
dataContext.Table.Where("id = 0 Or id = 1 Or id = 2 Or ...");
我想更改为:
dataContext.Table.Where("id IN (0, 1, 2, ...)");
但doesn't工作。我如何做到这一点以获得更好的表现?
从How to use “contains” or “like” in a dynamic linq query?
//edit: this is probably broken, see below
ids = new int[] {1,2,3,4};
dataContext.Table.Where("id.Contains(@0)", ids);
旁白:这是使用动态LINQ表达式占位符好的做法。否则,你可以打开自己的LINQ注入攻击(Is Injection Possible through Dynamic LINQ?)
编辑:
其实我觉得我搞砸这件事。 不幸的是我现在无法测试这个。 但我认为在这种情况下,正确的语法应该是dataContext.Table.Where("@0.Contains(id)",ids);
,而不是其他方式,并且该版本确实是而不是可直接使用。
请参阅here以便将此功能添加到动态链接。你需要修改这个库。
var ids = new int[] {1,2,3,4};
dataContext.Table.Where(f => ids.Contains(f.id))
似乎在System.Linq.Dynamic的1.0.4版,我们可以使用下面的语法dataContext.Table.Where("@0.Contains(outerIt.id)",ids);
,因为它是由在已经引用的博客介绍: here
谢谢,我知道这一点,但列名“id”正在改变。我得到这个专栏dinamycally。所以我不能使用静态Linq。我必须使用动态linq库作为例子的clausule字符串。 [Dynamic Linq](http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx) – 2012-04-17 09:46:43
@Ingenu ,阅读资源,你会发现什么动态Linq是关于 – 2012-04-17 17:15:38