2017-08-28 6 views
1

地獄!ダイナミックなlinqで配列/リストをフィルタリングする方法

フィルタにはすべて既知のバリエーションをContainsで試しましたが、これまでのところ運がありません。

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

次のエラーをもたらす

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

方法#2

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

方法#1

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

次のエラーを取得します3210

リストや配列でフィルタリングするにはどうすればよいですか?

私は右のあなたの質問を理解していればかなりわからないnuget 1.0.7に

答えて

1

次のように動作しますが、あなたはCaseIDと配列の値が同じ型を持っていることを確認しなければなりません。これはまだ私にエラーを与える

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

+1

'System.Linq.Dynamic.ParseExceptionは:「いいえ"それはscope''ではありません – JGOakley

0

を最新System.Linq.Dynamicライブラリを使用しています。 しかし、あなたはこれのようなものを意味しますか? これはLambda-Expressionで解決されています。

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} 
関連する問題