У меня есть следующий 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.
Проблема BIG в том, что я вынужден использовать этот код в .NET 3.5 , и я только что обнаружил, что Any
и Contains
(метод LINQ, а не один применяется к строкам) не работают в этих рамках. Это настоящая боль. Код слишком велик, чтобы все переписать, а крайний срок слишком близок.
Я нашел эту статью действительно интересной, но я не могу заставить ее работать в моем случае. Кто-нибудь может помочь?