こんにちは、列と製品と呼ばれるテーブルがあります
product_id
prodcut_name
prodcut_price( values like 1200,2000,3000,100)
prodcut_desc
category_id(1,2,3,.....)
列を持つ別のテーブルカテゴリ
category_id(1,2,3.......)
category_name(a,b,c....)
エンティティ名はdbcontextです...
カテゴリ名「a」の商品を入手するにはどうすればよいですか。商品の価格は500以上10000未満です。
エンティティにlinqを使用しています...
どのplsもこれを助けます...
どうもありがとう....
あなたは論理演算子を探しています、そしてこれらはあなたがc#で使用しようとしているものです:
&&
論理AND
||
論理OR
!
論理NOT
^
論理(ビット単位)XOR
COND ? TRUE-STATEMENT : FALSE-STATEMENT
三項演算子したがって、疑似コードの複合条件は次のようになります。
product_price > 500 AND product_price < 10000
DBに外部キーがない場合、コンテキストを作成すると、DBSetのみが含まれ、ナビゲーションプロパティは含まれなくなります。したがって、唯一の選択肢は、Cubicle.Jockeyの回答を使用することです。
DBに外部キーがある場合、エンティティオブジェクトにナビゲーションプロパティがあり、次のことが可能になります。
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>
。
from p in dbcontext.products
join c in dbcontext.category on p.category_id equals c.category_id
where p.product_price > 500 && p.product_price < 10000 && c.Name == "a"
select p
これにより、フィルタリングされた結果を含むIQueryableが返されます。
以下のVittoreの回答に基づいて、外部キー制約がある場合、これがより適切なバージョンになります。
from p in dbcontext.products
where p.category.name =='a' && p.product_price > 500 && p.product_price < 10000
select p;
category_id
の製品とカテゴリのテーブルを結合し、where
を使用してproduct_price
を除外します。