Вы ищете логические операторы, и именно эти вы собираетесь использовать в c #:
&&
логический AND
||
логический OR
!
логический NOT
^
логический (побитовый) XOR
COND ? TRUE-STATEMENT : FALSE-STATEMENT
троичный оператор
Итак, ваше составное условие в псевдокоде будет выглядеть так:
product_price > 500 AND product_price < 10000
Теперь, если у вас нет внешнего ключа в БД, когда вы создали свой контекст, он будет иметь только DBSets, а у них не будет свойств навигации. Поэтому ваш единственный вариант - использовать ответ Cubicle.Jockey.
Если у вас есть внешние ключи в БД, у вас будут свойства навигации для объектов сущности, и вы сможете делать следующее:
var query = from p in dbcontext.products
where p.category.name == 'a'
&& p.product_price > 500
&& p.product_price < 10000
select p;
В качестве альтернативы вы можете напрямую использовать методы расширения LINQ:
var query = dbcontext.Products.Where(p => p.category.name == 'a'
&& p.product_price > 500
&& p.product_price < 10000);
Если вам нужен список или массив и вы хотите закрыть dbcontext, вы вызываете ToList
или ToArray
на query
:
var products = query.ToList();
Существует альтернативный способ сделать это с помощью Entity Framework (EF) - встроенный EntitySQL язык запросов. Вы будете иметь подобное выражение с ним:
var query = ProductsQuery.Where("it.Category.Name == 'a' AND it.Product_Price BETWEEN 500 AND 10000");
, где ProductsQuery
- ObjectQuery<Product>
.