Предположим, у меня есть следующий класс и объекты:
class Product
{
public int ProductId { get; set; }
public string ProductDesc { get; set; }
}
string[] keywordArray = new string []{"A", "B", "C", "D"};
var products = repository.GetAllProducts();
Я использую var
, потому что GetallProducts()
возвращает IQueryable<Product>
, но я не могу "увидеть" тип Product
, поскольку он определен в моем DAL.
Теперь мне нужна временная переменная tempResult
для хранения временных результатов в foreach
. Например:
foreach(var keyword in keywordArray)
{
tempResult = tempresult.Union(products.Where(p => p.ProductDesc.Contains(keyword)));
}
Если я объявлю var tempResult
внутри foreach
, она будет перезаписываться на каждой итерации (и это даст ошибку времени компиляции , потому что ее нельзя использовать до инициализация).
Поэтому мне нужно инициализировать его за пределами foreach. Если я использую:
var tempResult = products;
Внутри моего foreach
Я просто подвожу ко всему набору свой желаемый результат. Набор.
Поэтому только два возможных решения:
1) Создайте метод в репозитории, который возвращает пустой IQueryable<Product>
( фабричный шаблон )
2) Использовать отражение (если возможно, еще не уверен)
Я нашел оба решения немного "грязными". Есть ли другой подход / шаблон для достижения этой цели? Спасибо