2017-08-28 80 views
1

地獄!如何通過動態linq過濾數組/列表

我試着用Contains過濾所有已知的變化,但到目前爲止沒有運氣。

方法#1

ret = ret.Where("CaseID.Contains(@0)", {15, 16, 17}) 

獲取以下錯誤:

System.Linq.Dynamic.ParseException: 'No applicable method 'Contains' exists in type 'Int32?''

方法#2

ret.Where("@0.Contains(outerIt.CaseID)", {15, 16, 17}) 

帶來如下錯誤:

System.Linq.Dynamic.ParseException: 'No 'it' is in scope'

那麼,我如何過濾列表或數組?

我使用的是最新的System.Linq.Dynamic庫的NuGet如果1.0.7

回答

1

以下將工作,但您必須確保CaseID和數組值具有相同的類型。

ret.Where("@0.Any(outerIt.CaseID=it)", array)

+1

這仍然給我的錯誤'System.Linq.Dynamic.ParseException:「不 '它' 是scope'' – JGOakley

0

不太知道我理解你的問題的權利。 但是你的意思是這樣嗎? 這是用Lambda表達式解決的。

var listA = new[] {1, 2, 3, 5, 8}; 
var listB = new[] {1, 3, 5, 7, 11}; 
var res = listA.Where(itemA => listB.Contains(itemA)); 
// res = {1,3,5}