hallo, ich habe eine Tabelle namens Produkte mit Spalten
product_id
prodcut_name
prodcut_price( values like 1200,2000,3000,100)
prodcut_desc
category_id(1,2,3,.....)
andere Tabellenkategorien mit Spalten
category_id(1,2,3.......)
category_name(a,b,c....)
und Entity-Name lautet dbcontext ...
Wie bekomme ich die Produkte mit dem Kategorienamen "a" und der Produktpreis ist> 500 und <10000
ich benutze Linq, um die Feindseligkeiten ...
würden alle pls auf diesem..einem helfen ....
Danke vielmals....
Sie suchen nach logischen Operatoren, und diese werden Sie in c # verwenden:
&&
logisch AND
||
logisch OR
!
logisch NOT
^
logisch (bitweise) XOR
COND ? TRUE-STATEMENT : FALSE-STATEMENT
ternärer Operator Ihre zusammengesetzte Bedingung in Pseudo-Code sieht dann folgendermaßen aus:
product_price > 500 AND product_price < 10000
Wenn Sie keinen Fremdschlüssel in der Datenbank haben, werden beim Erstellen des Kontexts jetzt nur DBSets verwendet, und diese verfügen nicht über Navigationseigenschaften. Ihre einzige Option ist also die Antwort von Cubicle.Jockey.
Wenn Sie in der Datenbank Fremdschlüssel haben, haben Sie Navigationseigenschaften für Ihre Entitätsobjekte und Sie können Folgendes tun:
var query = from p in dbcontext.products
where p.category.name == 'a'
&& p.product_price > 500
&& p.product_price < 10000
select p;
Alternativ können Sie LINQ-Erweiterungsmethoden direkt verwenden:
var query = dbcontext.Products.Where(p => p.category.name == 'a'
&& p.product_price > 500
&& p.product_price < 10000);
Wenn Sie eine Liste oder ein Array benötigen und dbcontext schließen möchten, rufen Sie entweder ToList
oder ToArray
für query
auf:
var products = query.ToList();
Es gibt einen alternativen Weg, dies mit Entity Framework (EF) - build-in EntitySQL query - Sprache zu tun. Sie werden einen ähnlichen Ausdruck damit haben:
var query = ProductsQuery.Where("it.Category.Name == 'a' AND it.Product_Price BETWEEN 500 AND 10000");
wobei ProductsQuery
ObjectQuery<Product>
ist.
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
Dadurch erhalten Sie eine IQueryable mit den gefilterten Ergebnissen.
Basierend auf der untenstehenden Antwort von Vittore wäre dies bei einer Fremdschlüsseleinschränkung die geeignetere Version:
from p in dbcontext.products
where p.category.name =='a' && p.product_price > 500 && p.product_price < 10000
select p;
verknüpfen Sie die Produkt- und Kategorietabellen in category_id
und verwenden Sie eine where
, um product_price
herauszufiltern.