2011-07-28 12 views
7

文字列型パラメータ 'baan_cat_fam_code'を持つオブジェクトがあります。以下のコードは、のbaan_cat_fam_codeを含むクエリ内のすべてのアイテムを、catFamCdという汎用文字列リストに存在する検索しようとしました。LINQ Any()引数とパラメータのデータ型の問題

query = query.Where(r => r.baan_cat_family_code.Any(s => catFamCode.Contains(s))); 

問題は、これがコンパイルされないということです - 私は述語がcharとして入力され、何らかの理由で

"Argument type 'char' is not assignable to parameter type 'string'" 

を示すエラーを取得します。だから、.ToString()の引数に追加します。メソッドを含みます。しかし、コードが実行されると、クエリの結果がリストボックスにバインドされると、次の例外がスローされます。

"The argument 'value' was the wrong type. Expected 'System.Char'. Actual 'System.String'." 

これは私の頭を傷つけてしまった。どんな支援も大歓迎です。

ありがとうございます!

答えて

13

baan_cat_family_codeのタイプはstringで、IEnumerable<char>を実装しています。あなたはそれが本質的

  • を言っているAny呼び出すときに、あなたが実際にも尋ねることにしたい何このstring

内の任意のcharための真の述語です

  • は、リスト内のこのstringですcatFamCode

あなたはcharsあるその要素、それゆえエラーを見た文字列にAny()を呼んでいる後者

query = query.Where(r => catFamCode.Contains(r.baan_cat_family_code)); 
2

を行い、以下をお試しください。

あなたは行っている必要があります。

query = query.Where(r => catFamCode.Contains(r.baan_cat_family_code)); 
関連する問題