Предположим, у меня есть следующий класс и объекты:
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) Используйте отражение (если это возможно, но пока не уверен)
Я нашел оба решения немного «грязными». Есть ли другой подход/шаблон для достижения этой цели? Спасибо
using
, если вы просто, например. чтение свойств внутри лямбды; вам это нужно только в том случае, если вам нужно ссылаться на класс где-то по имени, например. конструктор, объявление переменной и т.д. - person Rawling   schedule 29.03.2012