2

キーワードのリストを渡す単純な検索を作成しようとしています。しかし、「任意のキーワードを含む」を文字列ではなくリストとして追加するとすぐに、次のようになります。

"DbExpressionBinding requires an input expression with a collection ResultType."

私は拡張IQueryable<Inspector>しました:

 public static IQueryable<Inspector> Search(this IQueryable<Inspector> qry, List<string> keywords)
 {
    return from i in qry
           where
             i.LastName.Any(x => keywords.Contains(i.LastName)) ||
             i.FirstName.Any(x => keywords.Contains(i.FirstName)) ||
             i.City.Any(x => keywords.Contains(i.City)) ||
           select i;
 }

そして、私がそれを呼び出すとき、私は使用します:

return qry.Search(keywords).ToList();

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

4

あなたはこれに到達しようとしていると思います:

return from i in qry
    where keywords.Contains(i.LastName) ||
        keywords.Contains(i.FirstName) ||  
        keywords.Contains(i.City)
    select i;

これにより、FirstName、LastName、または City がキーワード リストに含まれるすべてのレコードが返されます。

于 2013-03-14T14:15:59.143 に答える