我有動態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