次のEFクラスがあります。
class Product
{
public int ProdId { get; set; }
public int ProdDesc { get; set; }
public int ProdKeywords { get; set; }
}
ここで、 と を調べる検索関数を実装する必要がProdDesc
ありProdKeywords
ます。キーワードは に登録され、array
製品のコレクションは に登録されます。IQueryable
string[] keywordsArray = new string[] {"kw1", "kw2", ..., "kwN"};
IQueryable<Product> products = repository.GetProducts();
キーワードに一致する製品があるかどうかを確認するには、次のLINQを使用します。
var matchingProducts = products.Where(p => keywordsArray.Any(k => p.ProdDesc.Contains(k) ||
p.ProdKeywords.Contains(k));
これは .NET 4 で魅力的に機能します。
大きな問題は、 .NET 3.5でこのコードを使用することを余儀なくされ、そのフレームワークでは (文字列に適用されるものではなく、LINQ メソッドが) 機能しないことAny
を発見したことです。Contains
それは本当に苦痛です。コードが大きすぎてすべてを書き直すことができず、締め切りが近すぎます。
この記事は非常に興味深いと思いましたが、私の場合は機能しません。誰か助けてくれる?