2017-06-01 123 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

我確實需要使用它。每個列和每個過濾條件都是在運行時確定的 –