Необязательное сравнение в запросе - PullRequest
0 голосов
/ 25 мая 2020

Привет, у меня проблема с моим запросом, потому что я хочу выбрать те товары, бренды которых называются в строковой подкатегории. Но если эта подкатегория равна «none», я бы выбрал их все, что я хочу сделать, в запросе не в linq. Вот моя функция

string subcategory = HttpContext.Current.Session["subcategory"].ToString() == "none" ? "" : HttpContext.Current.Session["subcategory"].ToString();
        List<int> processors = (from x in context.Processors
                                      where (x.Price >= filters.PriceMin && x.Price <= filters.PriceMax)
                                      where x.Brand == subcategory
                                      select x.Product_ID).ToList();

1 Ответ

1 голос
/ 25 мая 2020

Шаблон для этого в LINQ и EF заключается в построении запроса по-разному для двух случаев перед выполнением запроса путем вызова IQueryable.ToList (); например:

string subcategory = ...;
var q = from x in context.Processors
        where (x.Price >= filters.PriceMin && x.Price <= filters.PriceMax)
        select x;

if (subcategory != "none")
{
  q=q.Where(x => x.Brand == subcategory);
}

var processors = q.Select(x => x.Product_ID).ToList();
...